【发布时间】:2023-03-25 13:48:01
【问题描述】:
我正在尝试学习 Spring 中的 @EnableGlobalMethodSecurity 注释。这是一个似乎对我不起作用的示例。
这可以工作:假设我有一个全局控制器,它在每个页面上显示登录的用户名,如下所示:
@ControllerAdvice
public class GlobalController {
@ModelAttribute("username")
public String getCurrUser(Principal principal) {
if (principal != null) {
return principal.getName();
}
return null;
}
}
这不起作用:现在是同一个控制器,但这次带有 preAuthorize 注释。这将返回以下错误消息:localhost 将您重定向了太多次。
@ControllerAdvice
public class GlobalController {
@PreAuthorize("isAuthenticated()")
@ModelAttribute("username")
public String getCurrUser(Principal principal) {
return principal.getName();
}
}
我的 SecurityConfig 类 是这样注释的:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled=true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
...
那么如何使用 PreAuthorize 注释解决此错误消息?
【问题讨论】:
-
reverse '@Preauthorize 和 @modelattribute.... @ModelAttribute("username") @PreAuthorize("isAuthenticated()") public String getCurrUser(Principal principal) {
-
试过了,但仍然返回相同的错误信息:(
-
布尔检查 =SecurityContextHolder.getContext().getAuthentication().isAuthenticated();用第一种方法试试这个,然后告诉我结果??
-
登录和未登录时返回true。
标签: java spring spring-security authorization