【社区登录】5 开发登录

1 访问登录页面

2 登录

  • 登录凭证,不放 session,存入 login_ticket 表(id、user_id、ticket、status、expired),使用时再存入cookie

  • UserService.login:生成登录凭证 loginTicket,将 ticket 放入 map 中

  • LoginController

    @RequestMapping(path = "/login", method = RequestMethod.POST)
    // SpringMVC 将实体类自动注入 Model 中,但基本数据类型、String 等不会,手动注入或者页面从 request 中取
    public String login(String username, String password, String code, boolean rememberme,
                        Model model, HttpSession session, HttpServletResponse response) {
        // 1 检查验证码,忽略大小写 kaptcha.equalsIgnoreCase(code)
        // 2 检查 rememberme
        int expiredSeconds = rememberme ? REMEMBER_EXPIRED_SECONDS : DEFAULT_EXPIRED_SECONDS;
        Map<String, Object> map = userService.login(username, password, expiredSeconds);
        // 3 登录凭证放入 cookie 中
        if (map.containsKey("ticket")) { 
            Cookie cookie = new Cookie("ticket", map.get("ticket").toString());
            cookie.setPath(contextPath);
            cookie.setMaxAge(expiredSeconds);
            response.addCookie(cookie);
            return "redirect:/index";
        } else {
            model.addAttribute("usernameMsg", map.get("usernameMsg"));
            model.addAttribute("passwordMsg", map.get("passwordMsg"));
            return "/site/login";
        }
    }
    
  • 页面:th:value="${param.username}",从request中取值

3 退出

  • UserService

    public void logout(String ticket) {
        loginTicketMapper.updateStatus(ticket, 1);
    }
    
  • LoginController

    @RequestMapping(path = "/logout", method = RequestMethod.GET)
    // @CookieValue("ticket"):从Cookie中取值
    public String logout(@CookieValue("ticket") String ticket) {
        userService.logout(ticket);
        return "redirect:/login";
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值