我尝试用以下方式应用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()
,则可以正常工作。
我错在哪里?
1条答案
按热度按时间zrfyljdw1#
dur回答了一个使用多个rest端点的好方法:https://stackoverflow.com/a/41527591/2566098
我用一个新的项目测试了这个示例,并在密码字符串前面添加了“{noop}”,以使其正常工作,但效果很好。
基本上,我们将每个端点分离为自己的WebSecurity配置适配器扩展。
在本例中:
当您将其反转并使用antmatchers复数形式且缺少anyrequest()时(不确定这是否有区别):