为了账号安全,请及时绑定邮箱和手机立即绑定

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 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消