【问题标题】:spring security not working at all弹簧安全根本不起作用
【发布时间】:2018-10-31 03:29:48
【问题描述】:

我有以下配置:

@Configuration
@EnableWebSecurity
class SignInSecurityConfig(
        val authenticationEntryPoint: AppAuthenticationEntryPoint
) : WebSecurityConfigurerAdapter() {

    override fun configure(http: HttpSecurity) {
        http.cors().and().csrf().disable()
                .exceptionHandling().authenticationEntryPoint(authenticationEntryPoint)
                .and()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .authorizeRequests()
                .antMatchers("/sign_in", "/users/sign_up").permitAll()
                .anyRequest().authenticated()

        http.addFilterBefore(JwtAuthorizationFilter(), UsernamePasswordAuthenticationFilter::class.java)
    }
}

目前,JwtAuthorizationFilter 只是记录一些信息并调用chain.doFilter

现在,一些有趣的事情正在发生:

1)当我调用/users/sign_up时,注册过程被触发,尝试注册用户,如果成功,返回201,如果没有,返回401而不是500(在我的情况下,我想要返回 500)

2) 当我调用/sign_in 时,我只收到401,没有错误,没有日志,什么都没有。

3) JwtAuthorizationFilter 虽然在过滤器列表中,但从不被调用。

4) 过滤器链看起来很奇怪:

2018-05-21 14:58:22.318  INFO 2339 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: Ant [pattern='/users/sign_up'], []
2018-05-21 14:58:22.484  INFO 2339 --- [           main] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: org.springframework.security.web.util.matcher.AnyRequestMatcher@1, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@46b2cadf, org.springframework.security.web.context.SecurityContextPersistenceFilter@e41e9a9, org.springframework.security.web.header.HeaderWriterFilter@733dea73, org.springframework.security.web.csrf.CsrfFilter@59140203, org.springframework.security.web.authentication.logout.LogoutFilter@6e8e5936, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@52fb6fa5, org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter@497c75f3, org.springframework.security.web.authentication.www.BasicAuthenticationFilter@10a4663e, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@2cfbcfd6, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@5aa01db1, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@fe39081, org.springframework.security.web.session.SessionManagementFilter@47da14ce, org.springframework.security.web.access.ExceptionTranslationFilter@376d0f3a, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@797b0e0c]

任何想法为什么会发生这种情况?

我正在使用带有默认依赖版本的 Spring Boot 2.0.2

【问题讨论】:

  • 入口点一定有问题。

标签: spring spring-boot spring-security kotlin


【解决方案1】:

试试

.antMatchers(HttpMethod.GET,"/sign_in").permitAll().and()
.antMatchers(HttpMethod.GET, "/users/sign_up").permitAll().and()
.anyRequest().authenticated()

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 2019-04-27
    • 2015-06-06
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    相关资源
    最近更新 更多