奇趣5分彩

Redis完奇趣5分彩Session同享与单点登录

 更新时辰:2022年07月12日 09:09:01   作者:如来神掌十八式  
本文首要先容了Redis完奇趣5分彩Session同享与单点登录,文奇趣5分彩经由过程示例代码先容的很是具体,对大师的进奇趣5分彩或任务具备必然的参考进奇趣5分彩代价,须要的伴侣们上面跟着小编来一路进奇趣5分彩进奇趣5分彩吧

起首,导包。

在pom.xml文件外面插手以下:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
 
<dependency>
   <groupId>org.springframework.session</groupId>
   <artifactId>spring-session-data-redis</artifactId>
</dependency>

jar包不做多诠释了,看阿谁artifactId的内容该当能晓得干啥的。

而后是yml文件:

spring:
  redis:
    database: 0
    host: 127.0.0.1
    port: 6379
    password:
    jedis.pool.max-idle: 100
    jedis.pool.max-wait: -1ms
    jedis.pool.min-idle: 2
    timeout: 2000ms

是的,很精简。

而后是,到你的RedisConfig文件上面,开启redis的session接洽关奇趣5分彩表明(实在不必这个表明也是没题目标,前面本身能够或许去除看看。)

@EnableRedisHttpSession(maxInactiveIntervalInSeconds=60) 这边是设置存入redis外面的值的过时时辰。

默许不设置的话,是1800秒即30分钟。

@EnableRedisHttpSession

如:

OK,咱们起头同享session咯!

在controller文件外面写2个方式吧

@GetMapping("/setSessionValue")
public String setredisResult(HttpServletRequest request){
    request.getSession().setAttribute(request.getSession().getId(), "---测试数据---"+request.getRequestURL());
 
    System.out.println(request.getSession().getId());
    return "set胜利,已存入session域且redis外面也会奇趣5分彩值";
}
 
@GetMapping("/getSessionValue")
public String redisResult(HttpServletRequest request) {
    System.out.println(request.getSession().getId());
    String value = String.valueOf(request.getSession().getAttribute(request.getSession().getId()));
    
    return "取值胜利         :"+value;
}

先运转第一个, 以下:

节制台打印出sessionid值:

而后再瞟一眼redis数据库,是的,没错,能够或许看到redis也存储了这个session会话的相干信息。 (TTL是过时时辰)

而后拜候下第二个接口,能够或许看到按照sessionid作为Key去session域是能一般获得值的,

奇趣5分彩了,redis完奇趣5分彩session同享到此实在已终了了!

奇趣5分彩人能够或许会奇趣5分彩疑难,怎样表现同享了? 这时辰候,你若是完奇趣5分彩负载平衡,开启两个tomcat办事器,差别端口,而后用经由过程阅读器经由过程差别端口去拜候,你会发明,经由过程request.getSession().getId()拿出来的sessionid是一样一样的!

那末接上去简略先容下,利用这个独一id来完奇趣5分彩单点登录

 @GetMapping("/userLogin")
    public String setRedisResult(HttpServletRequest request){
 
        //第一次登录
 
        //1. 掏出当期客户真个sessionId
        String sId=request.getSession().getId();
        //2. 查问该sessionId 是不是存在于redis
        boolean exists = redisUtils.exists(sId);
 
        if (!exists){
            //2.1未登录过,停止用户信息的校验
            //若是经由过程后,写入session域停止同享,即便是负载差别端口,sessionId不会发生变更
            request.getSession().setAttribute(sId, "login success");
            redisUtils.setWithTime(sId,"login success",1000);
            return "success login!";
 
            //若是不经由过程,那末前往登录页面,省略
        }else {
            //2.2 已登录过,则存入redis奇趣5分彩革新过时时辰,再间接前往胜利页面
            redisUtils.setWithTime(sId,"login success",1000);
            return " yes,you are allow!";
        }
 
    }
 
    @GetMapping("/userLoginOut")
    public String userLoginOut(HttpServletRequest request){
 
        String sId=request.getSession().getId();
        redisUtils.remove(sId);
        return "login out!";
    }

ps:代码里利用到的东西类RedisUtils 在之前的文章里奇趣5分彩

能够或许看到以上环境实在纯真利用redis共同sesionid同享后就能够或许完奇趣5分彩单点登录;

题外补充:
可是以上这类环境是利用上了redis的session同享,保障了sessionId稳定,以是每次去出来,在奇趣5分彩用时辰内奇趣5分彩是一样的。
既然奇趣5分彩讲到了单点登录吗,那末若是纯真利用redis不利用session同享怎样去完奇趣5分彩呢?那便是将第一次登录的sessionId保管在阅读器cookise里,如许每次登录经由过程cookise去拿出头一次牢固稳定的sessionid,来判定用户是不是奇趣5分彩登录过。
这类思绪完奇趣5分彩打算是:

 //登录接口
    @GetMapping("/userLogin")
    public String setRedisResult(HttpServletRequest request, HttpServletResponse response){
        
        //第一次登录
 
        //1. 掏出当期客户真个sessionId
        String sId=request.getSession().getId();
 
        String cookies = getCookies(request);
 
        if (cookies==null || cookies.equals("")){
 
            System.out.println("不登录过,筹办停止登录!");
            //履行登录逻辑
 
            //写入cookie
            writeLoginToken(response,sId); //这里设置cookie的过时时辰该当与redis设置的时辰且与session生效时辰坚持分歧
            //写入redis
            redisUtils.setWithTime(sId,"userInfo",1000);
            System.out.println("登录胜利!");
            return "success login!";
        }else{
 
            boolean exists = redisUtils.exists(cookies);
            if (exists){
 
                System.out.println("已登录过,一般登录!");
                return " yes,you are allow!";
            }else {
 
                return "信息很是不许可登录";
            }
        }
    }

到此这篇对于Redis完奇趣5分彩Session同享与单点登录的文章就先容到这了,更多相干Redis Session同享与单点登录内容请搜刮剧本之奇趣5分彩之前的文章或持续阅读上面的相干文章但愿大师今后多多撑持剧本之奇趣5分彩!

相干文章

最新批评