zoukankan      html  css  js  c++  java
  • 登录成功后如何利用cookie保持登录状态

    Cookie是一种服务器发送给浏览器的一组数据,用于浏览器跟踪用户,并访问服务器时保持登录状态等功能。

    通常用户登录的时候,服务器根据用户名和密码在服务器数据库中校验该用户是否正确,校验正确后则可以根据用户ID和时间戳等属性加密生成一个Token,并返回给浏览器。
    生成一个ticket的例子:

    WebUtils.saveCookie(response, “ticket”, webTicket, -1, "/", null);
    

    这样浏览器就会得到一个cookie

    只要这个访问回话没有关闭,所有访问服务器的请求都会带上这个cookie。

    服务器通过拦截器来校验用户的登录状态

    //伪代码

    public class PassPortIntercepter  extends HandlerInterceptorAdapter {
        public boolean preHandler(HttpServletRequest request, HttpServletResponse response) {
            //拦截请求
            String ticket = request.getParameter("ticket");
            //根据ticke解密用户的id
            long id = SessionUtil.build(ticket).getUserId();
            //再从数据库中访问是否存在这个用户
            UserInfo user = userInfoService.getUserBy(id);
            //如果不存在user,讲该请求拦截,并跳回登录页
            if(user == null) {
                return false;
            }
            return super.preHandle(request, response, handler);
        }
    }
    

    这种情况下,cookie如果被人窃取,则会有泄露信息的危险。

    1. 通过设置httpOnly属性,这样cookie只在http中传输,而不会被脚本窃取,但是网络拦截http请求还是会得到cookie。
    2. 在cookie中加入校验信息,这个校验信息与用户的使用环境相关,比如ip地址,计算机的物理地址等,在服务器端对校验的时候,如果校验值发生了变化,则要求重新登录。
  • 相关阅读:
    CentOS-7 本地yum源挂载
    VMware 安装 Centos7
    linux永久关闭SELinux*
    linux添加用户
    git分支常用命令
    git 常用命令
    springboot 自定义interceptor 对请求进行拦截
    ORACLE 远程导出DMP文件
    解决idea2018无法安装lombok的问题
    centos下快速安装mysql
  • 原文地址:https://www.cnblogs.com/fishisnow/p/6812210.html
Copyright © 2011-2022 走看看