【发布时间】:2019-11-21 04:25:27
【问题描述】:
我正在尝试使用 Spring WebFlux 框架和 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"]
}
谁能帮我理解我做错了什么。
还是想不通。
【问题讨论】:
标签: java spring spring-security spring-webflux