我正在用从数据库获取的角色和权限实现一个Spring Security 。它只适用于Mapurl的情况。对于未Map的url,我没有得到403。下面是我的http配置。谢谢你的帮助。
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfigure extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(customUserDetailsService);
}
@Override
public void configure(HttpSecurity httpSecurity) throws Exception {
List<Role> roleModules = roleActionRepository.findAll();
ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry urlRegistry = httpSecurity.authorizeRequests();
httpSecurity.csrf().disable();
urlRegistry.antMatchers(
"/authenticate",
"/public/**",
"/common/**"
).permitAll();
roleModules.forEach(roleAction -> {
urlRegistry.antMatchers(HttpMethod.valueOf(module.getType()), module.getName()).hasAuthority(roleAction.getName());
});
urlRegistry.anyRequest().authenticated()
.and().csrf().disable().sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS);
httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);
}
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
}
假设我有一个urlMap/employee/**是从数据库得到的。为此,我的代码运行良好。但是假设我有另一个url,比如/user/**没有为任何角色配置。所以在理想情况下,一个人可以到达终点。但我不需要分配角色就可以访问该点。那我怎么才能阻止这件事。
您还可以找到角色Map的屏幕截图
什么时候 urlRegistry.anyRequest().authenticated()
增加了第四个索引。
暂无答案!
目前还没有任何答案,快来回答吧!