spring的issue
https://github.com/spring-projects/spring-session/issues/954
原答案是 Updated my codes to 2.0.0.RELEASE 但好像沒什么用。
spring整合了SpringSecurity,本來如果直接瀏覽器訪問接口沒問題,但是,前端使用vue訪問就會出現
Error: no such key
本來沒什么事,后來發現vue的同一個頁面下,單獨一個請求沒問題,但如果多次請求就出現接口報錯的情況,找到了上訴答案。
因為是spring整合了spring Security,在原答案中看到,每次檢查原session的時候如果不存在的話,就會創建新的session
,就想直接把security的session禁用掉試試怎么樣,沒想到成功了😄
貼下security的配置,將security的session管理禁用掉,並且從原有的session中獲取就行了。
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);
}
}