解决使用redis做为session缓存 报错 Error: no such key 的问题

spring的issue前端

https://github.com/spring-projects/spring-session/issues/954

原答案是 Updated my codes to 2.0.0.RELEASE 但好像没什么用。vue

spring整合了SpringSecurity,原本若是直接浏览器访问接口没问题,可是,前端使用vue访问就会出现git

Error: no such key

原本没什么事,后来发现vue的同一个页面下,单独一个请求没问题,但若是屡次请求就出现接口报错的状况,找到了上诉答案。github

由于是spring整合了spring Security,在原答案中看到,每次检查原session的时候若是不存在的话,就会建立新的session ,就想直接把security的session禁用掉试试怎么样,没想到成功了😄web

贴下security的配置,将security的session管理禁用掉,而且从原有的session中获取就好了。spring

package com.zjzc.crm.security.config;
 
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.annotation.Order;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.config.http.SessionCreationPolicy;
 
 /**
  * spring-security配置
  *
  */
 @Configuration
 @Order(99)
 public class WebSecurityConfig extends AbstractWebSecurityConfig {
 
     @Override
     protected void configure(HttpSecurity security) throws Exception {
 
         /**
          * always – 若是session不存在老是须要建立;
          * ifRequired – 仅当须要时,建立session(默认配置);
          * never – 框架从不建立session,但若是已经存在,会使用该session ;
          * stateless – Spring Security不会建立session,或使用session;
          * ---------------------
          * 做者:neweastsun
          * 来源:CSDN
          * 原文:https://blog.csdn.net/neweastsun/article/details/79371175
          * 版权声明:本文为博主原创文章,转载请附上博文连接!
          */
         security.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER);
 
         /*
          * "migrateSession",即认证时,建立一个新http session,原session失效,属性从原session中拷贝过来
          * “none”,原session保持有效;
          * “newSession”,新建立session,且不从原session中拷贝任何属性。
          */
         security.sessionManagement().sessionFixation().none();
 
         security
             .authorizeRequests()
             .antMatchers( "/login/**","/validate/**","/sys/user/resetPWD","/claim/fileUpload").permitAll();//权限不校验的接口
         super.configure(security);
     }
 }
相关文章
相关标签/搜索