我正在使用spring security 2.x(+ spring + struts2),并希望在用户提交表单后动态地为用户启用添加权限。
我有一个受ROLE_USER保护的受保护目录(/ protected / dir /)
<sec:intercept-url pattern="/protected/dir/**" access="ROLE_USER, ROLE_ADMIN" />
哪位用户在登录后可以访问。
我希望通过向主体添加临时ROLE_TEMP(可能甚至不存在,因为用户尚未登录,因此我可能必须添加)来提交提交表单的用户(无需登录)对于securityContext也是如此)
我尝试访问SecurityContext并在我的控制器/操作类中添加新的Principal。但是我无法获得SecurityContext。 (我认为SecurityContext只能在自己的线程上运行,你无法传递它,这就是我获得NPE的原因)
那么这样做的最佳方式是什么?
请指教 感谢
答案 0 :(得分:0)
支持匿名用户的一种方法是添加此过滤器:
/**
* Detects if there is no Authentication object in the SecurityContextHolder,
* and populates it with one if needed.
*/
org.springframework.security.providers.anonymous.AnonymousProcessingFilter
过滤器具有此属性,该属性将强制过滤器在请求完成后删除匿名会话:
public void setRemoveAfterRequest(boolean removeAfterRequest);