今天本来写一个简单的登录demo , 其中有个思路,就是直接将token 存在cookie 中,这样后端接口进行token校验的时候,可以直接从Cookie 中获取
但是,等我全部写好了,悲剧发生了,Cookie 就是没看见。
好想贴一张狗头的图片,但是我要做个积极向上的猿不是嘛 ?
对的,我一点都不桑心 !
直接说下,我错哪了,我错就错在Cookie的domain 和 path 的值 设置错了,
呜呜呜呜呜呜呜呜呜 ~
前端实现Cookie设值
注意: 需要引入jquery.js 和 cookie.js 包哦 , cookie 也可以直接操作 document 对象, 这里我采取了封装好的js 。
网上有很多在线的引入,请自行百度吧 ~
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" >
<title>控制台首页</title>
<script src="./js/jquery.min.js"></script>
<script src="./js/jquery.cookie.min.js"></script>
</head>
<body>
<script type="text/javascript">
。。。省略
'token ' -》 cookie 的key
'abcdefg' -》 cookie的值
domain -》 cookie 对应的域名 。 注意这里一定要写对域名哦,否则创建cookie值会失败
path -》 cookie 作用的 路径, 这里我写的是/ ,那我的作用范围就是 domain下 。
$.cookie('token','abcdefg',{domain: 'console.homework.com',path:'/'});
。。。省略
</script>
</body>
</html>
后端实现Cookie设值
这里贴下我的登录接口部分逻辑:
//登录
@GetMapping("/login/{email}/{password}")
public LagouToken login(@PathVariable String email, @PathVariable String password, HttpServletResponse response) {
。。。省略
//写入cookie
Cookie tokenCookie = new Cookie("token", tokenModel.getToken());
tokenCookie.setPath("/");
tokenCookie.setDomain(“console.homework.com”);
tokenCookie.setMaxAge(1); //有效期:天数,默认-1
response.addCookie(tokenCookie);
return data;
}