Spring Security 会话 JSESSIONID

2023-12-01

我目前正在使用 Spring Boot 为 Angular2 前端应用程序开发 REST API。

我使用 Spring Security 来管理用户身份验证,但我需要在浏览器会话中存储一些信息。问题是一个新的JSESSIONID根据每个请求创建。

例子:

  1. 认证POST它返回Set-Cookie:JSESSIONID=C367245309E4E80606066FDCFBE0EE43在响应头中。 使用用户信息创建一个新会话

Auth

  1. 受保护的 REST 资源GET: 会话为空并且JSESSIONIDCookie 不在请求标头中。它返回Set-Cookie:JSESSIONID=163B28B7AC2042F9EFF1046F9E14A600

AuthCheck

我的 Spring Security 配置是:

@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {

    // Unable x-frame-options from same origin
    httpSecurity.headers().frameOptions().sameOrigin();

    /*
     * the secret key used to signe the JWT token is known exclusively by
     * the server. With Nimbus JOSE implementation, it must be at least 256
     * characters longs.
     */
    String secret = IOUtils.toString(getClass().getClassLoader().getResourceAsStream("secret.key"),
            Charset.defaultCharset());

    httpSecurity.addFilterAfter(jwtTokenAuthenticationFilter("/**", secret), ExceptionTranslationFilter.class)
            .addFilterBefore(new SimpleCORSFilter(), CorsFilter.class)
            /*
             * Exception management is handled by the
             * authenticationEntryPoint (for exceptions related to
             * authentications) and by the AccessDeniedHandler (for
             * exceptions related to access rights)
             */
            .exceptionHandling().authenticationEntryPoint(new SecurityAuthenticationEntryPoint())
            .accessDeniedHandler(new RestAccessDeniedHandler()).and()

            /*
             * anonymous() consider no authentication as being anonymous
             * instead of null in the security context.
             */
            .anonymous().and()
            /* No Http session is used to get the security context */
            //
            .sessionManagement().maximumSessions(1).and().sessionFixation().none()
            .sessionCreationPolicy(SessionCreationPolicy.ALWAYS).and().authorizeRequests()
            /*
             * All access to the authentication service are permitted
             * without authentication (actually as anonymous)
             */
            .antMatchers("/auth/**").permitAll().antMatchers("/css/**").permitAll().antMatchers("/js/**")
            .permitAll().antMatchers("/accueil").permitAll()
            // .antMatchers("/**").permitAll()
            /*
             * All the other requests need an authentication. Role access is
             * done on Methods using annotations like @PreAuthorize
             */
            .anyRequest().authenticated().and().addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class).csrf()
            .csrfTokenRepository(csrfTokenRepository()).disable();
}

您能帮我解决我的会话问题吗?


这似乎是一个 angular2 问题,不发送 cookie;在调用 REST api 之前,我在构造函数中设置了以下代码:

 constructor(private _http: Http) {
        let _build = (<any>_http)._backend._browserXHR.build;
        (<any>_http)._backend._browserXHR.build = () => {
            let _xhr = _build();
            _xhr.withCredentials = true;
            return _xhr;
        };
    }

现在我的 JSESSIONID 正在发送每个请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Security 会话 JSESSIONID 的相关文章

随机推荐

  • 为什么 document.cookie 不显示该站点的所有 cookie?

    我去一个使用 vBulletin 3 8 的论坛 当我登录时 我使用 firebug 查看设置了哪些 cookie 我看到这些饼干 utmb utmc utma utmz bbsessionhash vbseo loggedin bbpas
  • 根据流星中选定的值从集合和过滤器中填充选择字段

    我是 Meteor 的新人 我有选择框 我想从 mongo 集合本身填充 我尝试按如下方式执行此操作 但不起作用
  • Eager TensorFlow 中的加载现在是否已损坏?

    从 tf keras Model 继承的类中的权重目前似乎无法加载 我无法使用检查点从类外的 Example 加载权重 因此我尝试在类内执行此操作 这从所有角度来看都应该可行 它能够保存权重 就像保存Example 时一样 但它仍然无法加载
  • NumPy:以 n 为底的对数

    来自关于对数的 numpy 文档 我找到了以底数取对数的函数e 2 and 10 import numpy as np np log np e 3 3 0 np log2 2 3 3 0 np log10 10 3 3 0 但是 如何以底数
  • 如何将scala代码块转换为字符串?

    我需要实现一个测试函数 用于检查 splain 插件的编译时错误信息 该函数的一部分需要将代码块转换为字符串 例如 def convert fn gt Unit String for testing val code convert obj
  • 使用 AndroidKeyStoreProvider 生成证书签名请求的最佳方法是什么?

    I read 本文 它说如何生成KeyPair 但是它没有指定如何根据生成的密钥生成证书签名请求 根据我的研究 要在 Java 中生成 CSR 网络上的示例通常使用该包sun 或 BouncyCastle 库 似乎没有办法生成符合标准的 C
  • 手动设置 FormBuilder 控件的值

    这让我发疯 我正处于枪口之下 不能再花一整天的时间在这上面 我试图在组件内手动设置控制值 dept 但它不起作用 即使新值日志也能正确控制台 这是 FormBuilder 实例 initForm this form this fb grou
  • Postgres DB 触发器调用 Java 函数

    是否可以在 postgres DB 中定义一个可以调用某些 Java 函数的触发器 我相信上述在Oracle中是可能的 但想知道是否适用于postgres 那么 如果这是可能的 这是否意味着将为每个连接到数据库的客户端应用程序调用 Java
  • 防止 JavaScript 内部 Ajax 调用中的默认行为或标签单击事件

    我用过e preventDefault 过去取消点击事件 但我无法弄清楚为什么它在这种情况下不起作用 我在带有类名的列中分配了所有标签 然后使用以下命令获取对它们的引用document queryselectorAll classname
  • 以管理员身份运行 Powershell 命令 - 命令本身不会加载

    using System using System Collections Generic using System ComponentModel using System Data using System Drawing using S
  • malloc 内存到指向指针的指针

    我在使用指向字符的指针时遇到了这个问题 void setmemory char p int num p char malloc num void test void char str NULL setmemory str 100 strcp
  • 使用结构体从 .txt 文件读取着色器

    我已经开始学习如何使用 OpenGL 并且我绝对讨厌在 main 之前将着色器声明为全局变量 我认为创建一个可以从项目目录中的文件读取着色器的结构或类会很酷 文件读取工作得很好 但由于某种原因 它实际上不会像我在 main 之前声明着色器那
  • C++ 与 .NET 正则表达式性能对比

    受到康拉德 鲁道夫 Konrad Rudolph 的评论的启发一个相关的问题 我编写了以下程序来对 F 中的正则表达式性能进行基准测试 open System Text RegularExpressions let str System I
  • Java SSL/TLS 与匿名 Diffie Hellman

    我有一个用 Java 编写的基本客户端 服务器应用程序 它使用普通套接字进行通信 我想防止针对它的被动窃听攻击并通过 TLS SSL 进行通信 我不希望应用程序用户陷入设置证书等的麻烦 我想使用 AES 加密 TLS DH anon WIT
  • 如何拥有带有查询字符串并聚焦于元素的 URL?

    在 URL 中 您可以通过附加 及其 id 来关注特定元素 例如 http stackoverflow com footer 上面的代码将自动将您聚焦到 id 为 footer 的元素 现在 如果我想包含一个查询字符串怎么办 像这样 htt
  • 如何重新排序节点元素,使其与 xsd:sequence 顺序匹配?

    有没有什么方法可以对 Node 对象中的元素进行重新排序 以便它们与xsd sequence命令 我已经阅读了文档Node normalize 但它似乎没有执行该功能 还有什么可以做的吗 我相信可以使用 XSLT 来完成 但使用 XSLT
  • COBOL 中使用 COMP 的变量

    我试图了解带有 COMP 使用子句的 COBOL 变量如何存储值 我尝试了如下一个例子 01 VAR14 PIC S9 5 USAGE COMP MOVE 12345 TO VAR14 DISPLAY VAR14 在 SPOOL 中的值VA
  • 生成列表的所有可能组合,“itertools.combinations”会丢失一些结果

    给定Python中的项目列表 如何获得项目的所有可能组合 该网站上有几个类似的问题 建议使用itertools combinations 但这仅返回我需要的子集 stuff 1 2 3 for L in range 0 len stuff
  • 远负回顾

    我该如何改变我的pattern进一步查看字符串 当单词 paragraph 位于模式 alpha 后面时 匹配为 false 否则为 true 例如 这将有5场比赛 代表法案 a b c d 中提及的任何人行事 或 e f 段 他们将是 a
  • Spring Security 会话 JSESSIONID

    我目前正在使用 Spring Boot 为 Angular2 前端应用程序开发 REST API 我使用 Spring Security 来管理用户身份验证 但我需要在浏览器会话中存储一些信息 问题是一个新的JSESSIONID根据每个请求