spring security动态角色权限角色和权限不工作

oknrviil  于 2021-07-16  发布在  Java
关注(0)|答案(0)|浏览(288)

我正在用从数据库获取的角色和权限实现一个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() 增加了第四个索引。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题