添加弹簧安全过滤器后的404

Posted

技术标签:

【中文标题】添加弹簧安全过滤器后的404【英文标题】:404 after adding spring security filters 【发布时间】:2021-12-31 23:29:03 【问题描述】:

向我的微服务添加安全配置后,我收到所有请求的 404 错误。请求本身与之前的安全配置相同。在输入控制器方法之前,我正在输入 AuthenticationFilter 并获得 404。控制器带有 @RestController 注释。

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(
    prePostEnabled = true,
    securedEnabled = true,
    jsr250Enabled = true)
public class HttpSecurityConfig extends WebSecurityConfigurerAdapter implements     WebMvcConfigurer 


@Autowired
private AdminAuthClient adminAuthClient;

@Autowired
private MyUserDetailsService myUserDetailsService;

@Override
protected void configure(final HttpSecurity http) throws Exception 
    http.cors()
            .and()
            .httpBasic().disable()
            .csrf().disable()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
            .authorizeRequests()
            .anyRequest()
            .authenticated()
            .and()
            .antMatcher("/admin/**")
            .addFilterBefore(new AuthenticationFilter(adminAuthClient, myUserDetailsService),
                    UsernamePasswordAuthenticationFilter.class);

【问题讨论】:

URL 你得到 404 not found GET localhost:8080/v1/admin/items v1 是上下文路径吗? 是的。即使我从上下文路径中删除它并从请求中删除 - 同样的 404 错误 您的自定义过滤器有什么作用? 【参考方案1】:

您必须授予在Spring Security 中加载Url 的权限。 Spring Security 有方法 permitAll() 用于授予 url 的权限。

下面是例子:

@Override
protected void configure(final HttpSecurity http) throws Exception 
    http.cors()
            .and()
            .httpBasic().disable()
            .csrf().disable()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
            .authorizeRequests()
             .antMatcher("/admin/**", "/v1/admin/items").permitAll() // for give permission
            .anyRequest()
            .authenticated()
            .and()
            .addFilterBefore(new AuthenticationFilter(adminAuthClient, myUserDetailsService),
                    UsernamePasswordAuthenticationFilter.class);

【讨论】:

以上是关于添加弹簧安全过滤器后的404的主要内容,如果未能解决你的问题,请参考以下文章

弹簧安全 CORS 过滤器

弹簧安全CORS过滤器

弹簧安全CORS过滤器

弹簧安全CORS过滤器

弹簧安全CORS过滤器

弹簧安全过滤器没有启动