具有WebFlux用户禁用的Spring Security 5.1.5无法正常工作

时间:2019-07-11 12:37:58

标签: java spring spring-security spring-webflux

我正在尝试使用Spring WebFlux Framework和MongoDB实现Web应用程序。一切都按预期工作,但是即使数据库中的 enabled 属性设置为 false ,它仍然允许我成功登录。事实并非如此。我的安全配置如下-

@Configuration
@EnableWebFluxSecurity
@EnableReactiveMethodSecurity
public class WebfluxSecurityConfig {

    @Autowired
    private Constants constants;
    @Autowired
    private UserRepository userRepo;

    @Bean
    public ReactiveUserDetailsService userDetailsService(UserRepository users) {
         return (username) -> users.findByUsername(username)
                    .map(u -> new UserAuth(u.getUserId()
                            , u.getUsername()
                            , u.getPassword()
                            , u.isEnabled()
                            , !u.isAccountExpired()
                            , !u.isCredentialsExpired()
                            , !u.isAccountLocked()
                            , UserAuth.getGrantedAuthorities(u.getRoles().toArray(new String[0]))
                            , StringUtils.isEmpty(u.getAuthSalt()) ? u.getUsername() : u.getAuthSalt()
                        )
                    );
    }

    @Bean
    public SecurityWebFilterChain springSecurityFilterChain3(ServerHttpSecurity http) {
         http
          .authorizeExchange()
              .pathMatchers("/web/**").authenticated()
              .pathMatchers("/**").permitAll()
          .and().formLogin()
                .loginPage("/login")
          .and().logout()
                .logoutUrl("/logout");

         return http.build();
    }
}

mongodb中的用户条目为-

{
    "_id": "5d149e3b3c1206008cf56af9",
    "username": "admin",
    "password": "{noop}admin",
    "firstName": "Admin",
    "lastName": "1",
    "email": "admin@eightfolds.in",
    "enabled": false,
    "accountLocked": true,
    "roles": ["ADMIN"]
}

任何人都可以帮助我了解我在做什么错。

仍然无法弄清楚。

1 个答案:

答案 0 :(得分:1)

感谢您举报。
您的配置没有错。检查用户帐户是否已禁用的行为尚不是WebFlux的一部分。
我在spring-security GitHub存储库上创建了issue,以添加此功能。