[cookie+redis实现单点登录 ]

目录

前言: 

使用cookie+redis实现单点登录的步骤如下:

在登录系统中,生成一个唯一的token,并将token保存到redis中。同时,将token写入cookie中,并设置cookie的过期时间。

在其他系统中,获取cookie中的token,并从redis中获取用户信息。

其他系统哪里来的cookie呢?


前言: 

     记录一个小笔记而已

   

使用cookie+redis实现单点登录的步骤如下:

  • 在登录时,生成一个随机的sessionId,并将sessionId和用户信息存储到Redis中,同时将sessionId存储到浏览器的Cookie中。

  • 在后续的请求中,首先从浏览器的Cookie中获取sessionId。如果sessionId存在且未过期,那么就从Redis中获取用户信息,并进行后续的请求处理。

  • 如果sessionId不存在或已过期,那么就重定向到登录页面,要求用户重新登录。

  • 在用户退出登录时,需要将sessionId从Redis和浏览器的Cookie中删除。

在登录系统中,生成一个唯一的token,并将token保存到redis中。同时,将token写入cookie中,并设置cookie的过期时间。

String token = UUID.randomUUID().toString();
redisTemplate.opsForValue().set(token, user);
Cookie cookie = new Cookie("token", token);
cookie.setMaxAge(3600);
response.addCookie(cookie);

我们使用UUID生成一个唯一的token,并将用户信息保存到redis中。然后,将token写入cookie中,并设置cookie的过期时间为3600秒。

在其他系统中,获取cookie中的token,并从redis中获取用户信息。

Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (Cookie cookie : cookies) {
        if (cookie.getName().equals("token")) {
            String token = cookie.getValue();
            User user = redisTemplate.opsForValue().get(token);
            if (user != null) {
                // 用户已登录,可以访问系统
            }
        }
    }
}
  • 我们使用request.getCookies()方法获取所有的cookie。然后,遍历所有的cookie,找到名为"token"的cookie,并获取其值。最后,使用token从redis中获取用户信息。如果用户信息存在,则表示用户已登录,可以访问系统。
  • 需要注意的是,我们需要在每个系统中都使用相同的redis实例,才能实现session共享。
  • 另外,为了保证session的安全性,我们还可以对token进行加密、签名等操作。比如,可以使用JWT(JSON Web Token)来实现token的加密和签名。

其他系统哪里来的cookie呢?

  • 其他系统是指与登录系统不同的系统,它们可以是同一台服务器上的不同应用,也可以是不同的服务器上的不同应用。当用户在登录系统中登录成功后,登录系统会将用户信息保存到redis中,并将token写入cookie中。当用户访问其他系统时,其他系统会从请求中获取cookie信息,并使用cookie中的token从redis中获取用户信息。
  • 具体来说,当用户在登录系统中登录成功后,登录系统会将token写入cookie中,并将cookie返回给浏览器。当用户访问其他系统时,浏览器会将cookie发送给其他系统。其他系统可以使用request.getCookies()方法获取所有的cookie,然后遍历所有的cookie,找到名为"token"的cookie,并获取其值。最后,使用token从redis中获取用户信息。

你可能感兴趣的:(粉丝栏,java,开发语言)