当前位置: 首页 > 知识库问答 >
问题:

Spring Boot Spring Security permitAll()和addFilter()配置没有效果

滕学义
2023-03-14
  1. 带有/login的URL模式应通过LoginFilter,在那里验证用户id和密码-工作正常

下面是我的安全配置代码。请帮助我在这个代码中缺少什么。如何配置过滤器,使JWT身份验证发生在URL模式 /login和 /register

Spring security core:4.2.3,Spring boot:1.5.4

 protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable().authorizeRequests()
            .antMatchers("/").permitAll()
            .antMatchers(HttpMethod.POST, "/login").permitAll()
            .antMatchers(HttpMethod.POST, "/users/register").permitAll()
            .anyRequest().authenticated()
            .and()
            // We filter the api/login requests
            .addFilterBefore(new LoginFilter("/login", authenticationManager()),
                    UsernamePasswordAuthenticationFilter.class)
            // And filter other requests to check the presence of JWT in header
            .addFilterBefore(new NoLoginAuthenticationFilter("/users/register"), UsernamePasswordAuthenticationFilter.class)
            .addFilterBefore(new JWTAuthenticationFilter("/**", authenticationManager()),
                    UsernamePasswordAuthenticationFilter.class);

}

共有1个答案

宣滨海
2023-03-14

你想要的是忽略某些URL。为此,请重写获取WebSecurity对象并忽略该模式的configure方法。

尝试将下面的方法重写添加到配置类中。

@Override
public void configure(WebSecurity web) throws Exception {
    web
    .ignoring()
    .antMatchers("/users/register/**");
}
 类似资料:
  • 我正在使用WebTestClient对控制器进行一些集成测试。如果我在控制器内设置了一个断点,我达到了WebTestClient的标准超时5s。解决方法是将AutoConfigureWebTestClient(timeout=“600000”)添加到我的测试中,正如她在Spring WEBFLUX中阻塞读取5000毫秒的超时所述。 对我来说,AutoConfigureWebTestClient(t

  • 我想要和的配置。对的授权是,而对的授权是(Separatley这两种配置都运行良好)。 预期行为: 请求 /v2/api/**将使用中给出的过滤器进行过滤,其中jwt被验证并创建上下文 所有其他请求都将使用ssl客户端证书验证。 它现在的工作方式——任何请求都会在之前触发AddFilterb,并因缺少jwt令牌而被拒绝。 我的配置类:

  • 只有这一个地方配置了 8001 端口。 打算是通过访问 http://localhost:8001/about/ 打开 html 目录下的 about.html 的,但是返回 403 错误。如果是访问 http://localhost:8001/ 会返回 html 目录下的 index.html 文件 如果注释了这里的配置,那么 http://localhost:8001/ 是无法访问的。也就是配

  • 我有一个基于Spring框架的项目,它只基于Java配置进行初始化。这意味着不需要使用web.xml文件。 您可以在下面的图像中看到项目的结构: Java 7 Spring framework 4.2.1.发布 HibernateORM 5.0.4.final Spring Tool Suite IDE 3.6.2 Maven3 Tomcat 7 数据源 而SystemSettings保存数据库的

  • 也许,我搜索了所有的互联网,但我一定错过了什么。 我根据文档配置Log4j2和Commons日志。我添加了,但其配置对应用程序输出没有影响。我看Log4j没有读这个文件。这是我的配置: pom.xml \src\main\资源\log4j2.xml 在任何类中-例如A类 应用程序具有函数,因此可以由IDE或mvn exec:java运行。 问题: 日志记录正在工作-但使用默认方式。 正如您在文件中

  • 本文向大家介绍如何设置没有有效期的JavaScript Cookie?,包括了如何设置没有有效期的JavaScript Cookie?的使用技巧和注意事项,需要的朋友参考一下 JavaScript cookie中的expires选项是可选的。“ expires”属性是可选的。如果为该属性提供有效的日期或时间,则cookie将在给定的日期或时间到期,此后,将无法访问cookie的值。 示例 要设置没