cookie session

xxx
 
2. 登录时候,cookie的使用:
 
登录页面:
1. 参数的边界判断(用户名、密码、图片验证码)
2. 验证图片验证码
2.1 拿cookie 的value 生成key
2.2 取缓存中值(验证码)—— 之前生成验证码时,存入缓存中的。
2.3 对比;
3. 根据用户名,去库里查询用户
4. 判断用户输错密码,是否被锁定,超出5次。
5. 根据密码,判断是否相等。密码输错5次,就往缓存中记录。超过5次,锁定30mins.
6. 获取用户权限列表。
6.1. 根据用户得id 查用户得角色,缓存中没有,就去库里查,查到得,再存在缓存中。缓存(key - value)
6.2. 根据用户得角色id 查用户得权限,缓存中没有,就去库里查,查到得,再存在缓存中。
7. userHasToken对象(userId token orgId expireTime userKey)存入缓存中。缓存(key - value)
8. userEventHistory 记录用户登录历史。
9. 设置登录时的Cookie. SY_SSO_TOKEN 得 token (uuid)
Cookie authCookie = new Cookie(Constants.SY_SSO_TOKEN_COOKIE_NAME, token);
authCookie.setHttpOnly(true);
authCookie.setPath("/");
authCookie.setMaxAge(Constants.AUTH_COOKIE_MAX_AGE);  //24h
if (StringUtils.hasText(Env.APP_BASE_PORT)) {
    authCookie.setDomain(Env.APP_BASE_DOMAIN + ":" + Env.APP_BASE_PORT);  // 好像不能加端口
} else {
    authCookie.setDomain(Env.APP_BASE_DOMAIN);
}
resp.addCookie(authCookie);
10. 登录成功,返回权限列表。
 
 
同服务:其它接口,获取是否登录,以及userHasTken
1. 请求,request response
request.getCookue() ——》就能拿到Cookie的值token(SY_SSO_TOKEN: token)
去缓存中拿userHasToken. 根据key(xxx-token)
缓存中没有,就去数据库中拿,判断是否有效;
查到后,再存在缓存中;
2. userHasToken里面有各种用户的相关信息。
 
 
其它服务:获取是否登录,以及userHasToken
Filter:
CrossDomainFilter
AuthorityFilter req.setAttribute("UserHasToken", userHasToken);
之后才放行。
服务之间来回调用;
 
 

posted @ 2021-03-22 17:43  Alice的小屋  阅读(6)  评论(0)    收藏  举报