我正在尝试在我的spring-jersey bean中检索安全上下文,但是我一直在进行Null身份验证。当我从spring应用程序中运行相同的命令时,它会正确检索当前登录的用户安全上下文。
spring-jersey的配置需要为主spring应用程序创建一个单独的servlet,因此web.xml有两个servlet - 一个用于spring app,第二个用于jersey rest api。
假设问题与此有关,我尝试将安全上下文共享模式设置为global,但是我仍然无法从Jersey中获取上下文信息。
SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_GLOBAL)
非常感谢任何帮助!
非常感谢, 奈杰尔
答案 0 :(得分:2)
也许用户根本没有经过身份验证,因为您的Jersey请求没有会话cookie,因此与经过身份验证的用户的会话无关?
您可以通过在Spring Security中启用匿名身份验证来检查它 - 如果猜测正确,您应该获得匿名身份验证而不是null
。
答案 1 :(得分:0)
@axtavt感谢您的评论。这个线索有助于解决我的问题,检查我的安全过滤器的配置方式,我在Spring安全配置中找到了这一行
<security:intercept-url pattern="/api/**" filters="none" />
这一行有效地禁用了所有弹簧安全过滤器,删除了这个问题。
非常感谢你的帮助:)。