spring利用SecurityContextHolder获取用户信息的session 出现空指针异常,应该是我没设置,但不知道哪里设

2025-05-09 17:28:58
推荐回答(1个)
回答1:

首先Spring security不完全是依赖HttpSession来保存用户对象,而是放在threadlocal里面的。
通过HttpSessionIntegrationFilter,它也会同步到HttpSession,在非servlet环境,可以直接通过SecurityContextHolder获取,在Serlvet环境,也可以用session.getAttribute(...)得到,那个key忘了。

spring security先post登录信息到/j_spring_security_check这条URL,这条URL会调用UserDetailService去检查用户是否valid,如果通过,就把user信息塞进SecurityContextHolder。