首页 > 其他分享 >SpringMVC(七):利用Cookie实现登陆验证

SpringMVC(七):利用Cookie实现登陆验证

时间:2022-10-22 17:33:12浏览次数:34  
标签:userName cookies return String 验证 SpringMVC cookie Cookie

一、登陆时要往将用户登陆的信息存入Cookie

@RequestMapping("/doLogin")
    @ResponseBody
    public String doLogin(String userName, String userPassword, HttpServletResponse response) {
        User user = userService.queryUserByName(userName);
        if (user != null && user.getUserPassword().equals(userPassword)) {
            Cookie cookie = new Cookie(Constant.USERNAME, userName);
            cookie.setMaxAge(7*24*60*60);
            response.addCookie(cookie);
            return "true";
        }
        return "false";
    }

cookie.setMaxAge()是设置cookie的过期时间,这里设置的是7天过期,如果不进行时间设置,cookie默认会在浏览器关闭时过期。

二、拦截器中验证cookie

public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals(Constant.USERNAME)) return true;
            }
        }
        response.sendRedirect("/login");
        return false;
    }
}

 三、进入登陆页面时判断cookie,若存在则无需登录,不存在则需要登录

@RequestMapping("/login")
    public String loginPage(HttpServletRequest request, String userName, Model model) {
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                if (Constant.USERNAME.equals(cookie.getName()))
                    return "redirect:/user/main";
            }
        }
        if (userName != null) model.addAttribute("userName", userName);
        return "login";
    }

四、注销时删除cookie

@RequestMapping("/doLogout")
    public String doLogout(HttpServletRequest request, HttpServletResponse response) {
        Cookie[] cookies = request.getCookies();
        if (cookies != null){
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals(Constant.USERNAME)) {
                    cookie.setMaxAge(0);
                    cookie.setPath("/");
                    response.addCookie(cookie);
                }
            }
        }
        return "redirect:/";
    }

 

 

(本文仅作个人学习记录用,如有纰漏敬请指正)

标签:userName,cookies,return,String,验证,SpringMVC,cookie,Cookie
From: https://www.cnblogs.com/jmsstudy/p/16816746.html

相关文章

  • Redis两节点高可用设计方案​功能验证
    该文档主要是针对RedisGraph高可用方案设计的功能测试,来说明方案是可实施是可行的。具体方案设计看前面的高可用方案设计文章功能测试准备条件master、slave两台服务器172.......
  • 第二十三章 CSP Session 管理 - 身份验证共享策略
    第二十三章CSPSession管理-身份验证共享策略本节介绍如何通过两种方式创建一组应用程序以作为一个组工作:共享认证:如果应用程序不共享认证,用户必须分别登录到被另一......
  • 2_cookie、session、token、sign
    一、关于cookie、session、token、sign 借鉴链接:https://juejin.cn/post/7147913027785293855 ......
  • 实现基于文件验证的vsftpd虚拟用户
    虚拟用户:  不存在于操作系统中,而是专门给对应服务使用的账号。虚拟用户的家目录:  所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此统帐号的家目录......
  • 深度学习模型训练的过程理解(训练集、验证集、测试集、batch、iteration、epoch、单步
    呜呜呜呜,感谢大佬学弟给我讲干货.本来是讨论项目的,后面就跑偏讲论文模型了. 解答了我一直以来的疑问:数据放模型里训练的过程. 假设我们有一个数据集26304条数据,假设设置模......
  • 【TPC-DS】trino+S3+hive+postgresql性能测试----生成简单数据验证环境(四)
    1、安装与配置下载安装包gitclonehttps://github.com/gregrahn/tpcds-kit.gitcdtpcds-kit/toolsmakeOS=LINUX存放的位置为:/root/trino(备注:自己定义即可,尽量与trino-ser......
  • SpringMVC
    基本使用:1.使用springMVC技术需要先导入servlet和springMVC(spring-webmvc)坐标2.创建一个springMVC的控制器类(等同于servlet功能)@controller是springMVC专属的,@RequestMap......
  • electron升级到20版本后,禁用第三方cookie、跨域问题解决方法
    最近公司的electron项目从13升级到最新的20版本,导致qq登录失效问题,特此记录1.qq扫码登录失效升级后之前的老版本可以扫码登录,但是新版本扫码登录后,页面直接刷新,没有登录......
  • springMvc路径参数映射原理
     一、springMvc 执行流程图 二、springMvc中url映射接口关键点2.1:AbstractHandlerMappingorg.springframework.web.servlet.handler.AbstractHandlerMapping#getHa......
  • 验证码 CAPTCHA 的来历
    全自动区分计算机和人类的公开​​图灵测试​​​(英语:Completely Automated Public Turingtesttotell Computersand Humans Apart,简称CAPTCHA),俗称验证码,是一种区......