如何在springboot中应用url和基于角色的身份验证?

kh212irz  于 2021-07-16  发布在  Java
关注(0)|答案(1)|浏览(271)

我尝试用以下方式应用url和基于角色的身份验证

http
    .authorizeRequests()
        .antMatchers("/rest/**").hasRole("ADMIN")
        .and()
    .authorizeRequests()
        .antMatchers("/admin/**").hasRole("MANAGER")
        .and()
    .authorizeRequests()
        .antMatchers("/restApi/**").hasRole("USER")
        .anyRequest().authenticated()
        .and()
    .formLogin()
        .permitAll();

但在输入用户名和密码后,我将返回SpringBoot提供的默认登录屏幕。
如果我使用 permitAll() 而不是 hasRole() ,则可以正常工作。
我错在哪里?

zrfyljdw

zrfyljdw1#

dur回答了一个使用多个rest端点的好方法:https://stackoverflow.com/a/41527591/2566098
我用一个新的项目测试了这个示例,并在密码字符串前面添加了“{noop}”,以使其正常工作,但效果很好。
基本上,我们将每个端点分离为自己的WebSecurity配置适配器扩展。
在本例中:

http
    .antMatcher("/api/**")
    .authorizeRequests()
    .anyRequest().hasRole("ADMIN")
    .and().httpBasic();

当您将其反转并使用antmatchers复数形式且缺少anyrequest()时(不确定这是否有区别):

http
    .authorizeRequests()
    .antMatchers("/rest/**").hasRole("ADMIN")

相关问题