【问题标题】:@PreAuthorize("isAuthenticated()") redirected server too many times@PreAuthorize("isAuthenticated()") 重定向服务器太多次
【发布时间】: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


【解决方案1】:

我最近也在学习 Spring 和 Spring 安全性。 您的基本 url 模式是否有限制? 我尝试将所有登录重定向到根据我的配置需要身份验证的同一点。

查看配置是否正确,代码是否正确设置了访问安全。

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 2013-09-21
    • 2015-02-16
    • 2017-04-19
    • 2012-06-16
    • 1970-01-01
    • 2017-04-12
    • 2020-07-02
    • 2013-01-01
    相关资源
    最近更新 更多