Java JWT身份验证应用程序中是否需要SecurityContextHolder?
我正在用SpringBoot开发应用程序,我需要jwt认证。我决定使用那个github项目,但当我看代码时,我不理解SecurityContextHolder的含义 下面是使用它的两个类: 你能告诉我SecurityContextHolder的目的是什么吗?我想要没有会话的无状态身份验证。所以我只需要生成jwt,然后在请求之前检查它 此git项目还具有禁用会话:Java JWT身份验证应用程序中是否需要SecurityContextHolder?,java,spring,spring-security,jjwt,Java,Spring,Spring Security,Jjwt,我正在用SpringBoot开发应用程序,我需要jwt认证。我决定使用那个github项目,但当我看代码时,我不理解SecurityContextHolder的含义 下面是使用它的两个类: 你能告诉我SecurityContextHolder的目的是什么吗?我想要没有会话的无状态身份验证。所以我只需要生成jwt,然后在请求之前检查它 此git项目还具有禁用会话: ... httpSeccurity.sessionManagement().sessionCreationPolicy(Sessi
...
httpSeccurity.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
...
我尝试过使用SecurityContextHolder删除代码,应用程序仍然可以正常工作
感谢您的回答。以下是对以下内容的引用:
安全性的一个主要方面是存储应用程序当前使用的主体的信息。它由应用程序的安全上下文持有。SecurityContextHolder是框架中最重要的对象,因为它在ThreadLocal中存储有关安全上下文的详细信息。这意味着安全上下文将可用于在同一线程中执行的方法。但是,在少数情况下,应用程序中的所有线程可能需要使用其他策略来使用安全上下文。该框架提供了两种方法来更改使用ThreadLocal的默认性质。开发人员可以设置系统属性,也可以调用SecurityContextHolder上的静态方法
应用程序在删除代码后仍能工作的原因是,通过使用创建策略,您请求Spring Security不要创建HTTP会话,也不要在会话中存储登录的用户
何时使用SessionCreationPolicy.STATELESS
- 在应用程序的整个生命周期内停止创建会话
- 在应用程序的整个生命周期内停止使用会话
spring security jwt
它不是只与oauth2一起工作吗?哦,是的,你是对的,它不是自己的项目,哦。它是spring-security-oauth2
项目的一部分。你有什么理由不想使用oauth2吗?这是高度定制,我知道,但我只需要jwt令牌