Springboot点餐系统登录登出
标签:
SpringBoot
使用账号密码的方式重新实现了一遍。
核心逻辑和视频中保持一致。
总的来说,需要掌握的就是HttpServletRequest 和 HttpServletResponse 两个类的使用。
首先定义一个登陆页面:
@GetMapping("login/index")
public ModelAndView loginPage()
{
return new ModelAndView("order/login");
}
然后定义一个验证方法:
@PostMapping("login/verify")
public ResultVO loginVerify(@RequestParam("username") String username,
@RequestParam("password") String password,
HttpServletResponse httpServletResponse)
{
Integer result = loginService.verify(username, password, httpServletResponse);
return ResultVOUtil.error(result, EnumUtil.getByCode(result, LoginEnum.class).getMsg());
}
verify 方法实现:
@Override
public Integer verify(String username, String password, HttpServletResponse httpServletResponse) {
// 去数据库查
SellerInfo sellerInfo = getUserByUname(username);
if (sellerInfo == null) {
log.error("用户不存在!{}", username);
return LoginEnum.ERR_USN.getCode();
}
if (!password.equals(sellerInfo.getPassword())) {
log.error("用户密码错误!{}");
return LoginEnum.ERR_PWD.getCode();
}
// 设置token到redis
String uuid = UUID.randomUUID().toString();
String key = RedisConstant.PREFIX + uuid;
Integer expired = RedisConstant.EXPIRED;
stringRedisTemplate.opsForValue().set(key, password, expired, TimeUnit.SECONDS);
// 设置 token 到cookie
Cookie cookie = CookieUtil.setCookie("token", uuid, 7200);
httpServletResponse.addCookie(cookie);
return LoginEnum.SUCCESS.getCode();
}
退出登陆:
@GetMapping("logout")
public ModelAndView logout(HttpServletResponse httpServletResponse,
HttpServletRequest httpServletRequest,
Map<String, Object> map)
{
// 从cookie中查询
Cookie cookie = CookieUtil.getCookie(httpServletRequest, "token");
if (cookie != null) {
String token = "token_" + cookie.getValue();
stringRedisTemplate.opsForValue().getOperations().delete(token);
httpServletResponse.addCookie(CookieUtil.setCookie("token", "", 0));
}
map.put("msg", "登出成功");
map.put("url", "/sell/admin/login/index");
return new ModelAndView("common/success", map);
}
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦