我试图实施此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工作正常?
答案 0 :(得分:3)
确保您的控制器URL中没有filters = "none"
<intercept-url>
,它会禁用Spring Security过滤器,因此不会填充安全上下文。
如果您需要让所有人都可以访问您的控制器,请使用other approaches。