继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Springboot点餐系统登录登出

慕慕7652243
关注TA
已关注
手记 3
粉丝 3
获赞 6

使用账号密码的方式重新实现了一遍。
核心逻辑和视频中保持一致。
总的来说,需要掌握的就是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);
}
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP