访问当前用户,在spring控制器中,getAuthentication()返回null

时间:2011-10-18 17:21:49

标签: java spring spring-mvc spring-security

我试图实施此question.

中提供的解决方案

然而,他们都没有为我工作。在我的抽象基本控制器中,我有以下方法(我也尝试过使用静态方法的helper类,但同样的问题):

public User getUser() {
  User user = 
    (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();       
}

getAuthentication()返回null ,即使在我的jsps中,以下功能也完美无缺:

<sec:authentication property="principal.firstname" /> 

因为我的自定义用户对象是可访问的。

为什么getAuthentication返回null?

另外,我尝试将Principal作为参数传递给我的特定控制器方法,这个null也解析为null ...

为什么我的校长为null,但是jsp工作正常?

1 个答案:

答案 0 :(得分:3)

确保您的控制器URL中没有filters = "none" <intercept-url>,它会禁用Spring Security过滤器,因此不会填充安全上下文。

如果您需要让所有人都可以访问您的控制器,请使用other approaches