gpt4 book ai didi

Spring安全+ session : Receive "Set-Cookie" header but not set in browser

转载 作者:行者123 更新时间:2023-12-02 03:13:34 25 4
gpt4 key购买 nike

我正在尝试使用 Angular 前端来实现 Spring Security 和 Session。尝试使用该响应 header 登录时,我收到 200 代码:

Set-Cookie: SESSION=NGJlYTkzODQtNTQzMy00NGIxLWEzOWYtYTc2MGNlZWY1OTJm; Path=/; HttpOnly; SameSite=Lax

但是在我向服务器发出的下一个请求中,请求中不会自动设置 cookie。顺便说一下,我在开发者工具中看不到 cookie,所以我认为它没有保存。

我在本地从事前端和后端工作。

以下是有关后端的一些信息:

  • 使用 Spring MongoDb session
    @配置
    @EnableMongoHttpSession
    公共(public)类 session 配置{
    }

    • 经典 Spring 安全配置

` @EnableWebSecurity 公共(public)类 SecurityConfig 扩展 WebSecurityConfigurerAdapter { 私有(private)最终 CustomAuthenticationProvider authProvider;

public SecurityConfig(CustomAuthenticationProvider authProvider) {
this.authProvider = authProvider;
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authProvider);
}

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors().and()
.authorizeRequests()
.anyRequest().authenticated()
.and()
.httpBasic(); //todo csrf
}

@Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Collections.singletonList("http://localhost:4200")); // todo properties by environment
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "OPTIONS", "DELETE", "PUT", "PATCH"));
configuration.setAllowedHeaders(Arrays.asList("X-Requested-With", "Origin", "Content-Type", "Accept", "Authorization"));
configuration.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}

}`

session 很好地保存在 mongodb 中,只是 id 没有保存在浏览器中。有什么想法吗?

编辑

在 httpClient 参数中设置 observer: "response" 时,我看不到 Set-Cookie header :

“缓存控制:无缓存,无存储,max-age=0,必须重新验证,内容类型:application/json,过期:0,pragma:无缓存”

但是在开发者工具中我有:


HTTP/1.1 200
变化:起源
变化:访问控制请求方法
变化:访问控制请求 header
访问控制允许来源:http://localhost:4200
访问控制允许凭据: true
X-内容类型选项:nosniff
X-XSS-保护:1;模式= block
缓存控制:无缓存、无存储、max-age=0、必须重新验证
编译指示:无缓存
过期时间:0
X 帧选项:拒绝
设置 Cookie:SESSION=YTEwOTNkNjAtZjI4MS00ZmM2LWExYmEtYzA5NzJhMjAyNTJh;路径=/;仅 Http; SameSite=宽松
内容类型:application/json
传输编码:分块
日期:2019 年 7 月 1 日星期一 11:25:08 GMT

最佳答案

问题出在有角的一侧!我添加了一个拦截器,添加了 withCredentials 参数,它可以工作。

@Injectable()
export class XhrInterceptor implements HttpInterceptor {

intercept(req: HttpRequest<any>, next: HttpHandler) {
const xhr = req.clone({
withCredentials: true
});
return next.handle(xhr);
}
}

关于Spring安全+ session : Receive "Set-Cookie" header but not set in browser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56834485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com