获取当前登录对象信息
登录流程
1.浏览器发起请求获取验证码
2.接收请求,生成验证码,保存到redis中,设置过期时间5分钟,返回浏览器
3.浏览器输入用户名,密码,验证码,uuid
4.接收请求,通过用户名到数据库中查询用户
5.数据库返回数据库,判断用户是否存在
6.从通过uuid到redis中查询验证码和浏览器传入的验证码进行对比,判断验证码是否一样
7.判断密码是否一样
8.判断账户是否被禁用
9.Jwt生成touken
10.以token为key,用户id为value保存到redis中,设置过期时间30分钟(重要)
11.修改数据库当前登录对象信息
12.返回token到浏览器
代码:
/** * 获取当前登陆人信息 * * @param request * @param response * @return */ @GetMapping("/getLoginUser") public AjaxResult getLoginUser(HttpServletRequest request, HttpServletResponse response) { String token = request.getHeader("token"); Object o = redisUtil.get(token); if (o == null) { return AjaxResult.error(HttpStatus.UNAUTHORIZED, "非法访问,请先登录"); } People people1 = new People(); people1.setId(Long.valueOf(o.toString())); People people = peopleService.selectById(people1); if (people != null) { return AjaxResult.success(people); } else { return AjaxResult.error("您的账户不存在或者已经注销登录,请重新登录"); } }
1.从请求头中传入的token,获取到token,
2.通过token到redis中查询到当前登陆人的id
3.到数据库中查询并返回
4.如果从redis中没有获取到id,就说明该用户已经注销或者不存在,返回错误信息
测试
退出登录
1.从请求头中获取token
2.通过token到redis中查询
3.判断如果有,就删除数据
4.如果没有就返回错误信息
代码:
/** * 退出登录 * * @param request * @param response * @return */ @GetMapping("/loginOut") public AjaxResult loginOut(HttpServletRequest request, HttpServletResponse response) { String token = request.getHeader("token"); Object o = redisUtil.get(token); if (o != null) { redisUtil.del(token); return AjaxResult.success(); } return AjaxResult.error("用户不存在"); }
测试结果
退出登录
这时候我们再用这个删除的token去请求其他接口就会提醒:非法登录,错误码:401,请先登录
访问其他接口
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119875.html