联系人列表为空,请先登录
我了解你的需求。
你可以通过两个身份验证过滤器来实现这一点。
过滤器-1:用于Rest API(JwtAuthTokenFilter),它应该是无状态的,并且通过请求中发送的授权令牌进行标识。 过滤器-2:你还需要另一个过滤器(UsernamePasswordAuthenticationFilter)。默认情况下,如果你通过 http.formLogin() 进行配置,Spring Security会提供这个过滤器。在这里,每个请求都是通过会话(JSESSIONID cookie)进行标识的。如果请求不包含有效的会话,则会重定向到认证入口点(比如:登录页面)。
http.formLogin()
JSESSIONID
api-url-pattern = "/api/**" [严格用于 @order(1)] webApp-url-pattern = "/**" [通配符 "/**" 始终用于更高的顺序,否则下一个顺序配置将变为无效配置]
定义具有@EnableWebSecurity注解的主配置类
@EnableWebSecurity
创建两个内部静态类,它们应该扩展WebSecurityConfigurerAdapter并使用@Configuration和@Order进行注解。这里,用于Rest API配置的顺序应该是1,而用于Web应用程序配置的顺序应该大于1
WebSecurityConfigurerAdapter
参考我在这个链接中的答案中有更多详细解释,其中包含必要的代码。如果需要,可以随时要求提供github存储库中的可下载链接。
限制 这里两个过滤器将同时工作(并行)。也就是说,即使用户通过会话进行了身份验证,他也无法在没有JWT令牌的情况下访问API。
编辑 对于OP的要求,他不想定义任何角色,但允许已经通过身份验证的用户访问API。针对他的需求,修改以下配置。
http.csrf().disable() .antMatcher("/web/umgmt/**").authorizeRequests() .antMatcher("/web/umgmt/**").authenticated() // 使用这个
我了解你的需求。
你可以通过两个身份验证过滤器来实现这一点。
过滤器-1:用于Rest API(JwtAuthTokenFilter),它应该是无状态的,并且通过请求中发送的授权令牌进行标识。
推荐的URL模式过滤器-2:你还需要另一个过滤器(UsernamePasswordAuthenticationFilter)。默认情况下,如果你通过
http.formLogin()
进行配置,Spring Security会提供这个过滤器。在这里,每个请求都是通过会话(JSESSIONID
cookie)进行标识的。如果请求不包含有效的会话,则会重定向到认证入口点(比如:登录页面)。api-url-pattern = "/api/**" [严格用于 @order(1)] webApp-url-pattern = "/**" [通配符 "/**" 始终用于更高的顺序,否则下一个顺序配置将变为无效配置]
实现方法
定义具有
@EnableWebSecurity
注解的主配置类创建两个内部静态类,它们应该扩展
WebSecurityConfigurerAdapter
并使用@Configuration和@Order进行注解。这里,用于Rest API配置的顺序应该是1,而用于Web应用程序配置的顺序应该大于1参考我在这个链接中的答案中有更多详细解释,其中包含必要的代码。如果需要,可以随时要求提供github存储库中的可下载链接。
编辑
对于OP的要求,他不想定义任何角色,但允许已经通过身份验证的用户访问API。针对他的需求,修改以下配置。
http.csrf().disable() .antMatcher("/web/umgmt/**").authorizeRequests() .antMatcher("/web/umgmt/**").authenticated() // 使用这个