我必须检查用户是否有切换用户的权限,基于他的userId
. 在我的安全 xml 中,在<http>
元素内部,我指定了一个自定义过滤器:
<custom-filter after="FILTER_SECURITY_INTERCEPTOR" ref="switchUserProcessingFilter"/>
<beans:bean id="switchUserProcessingFilter" class="com.something.MySwitchUserFilter">
<beans:property name="userDetailsService" ref="userServices" />
<beans:property name="switchUserUrl" value="/admin/switchUser" />
<beans:property name="exitUserUrl" value="/exitUser" />
<beans:property name="successHandler" ref="userSwitchSuccessHandler"></beans:property>
</beans:bean>
在MySwitchUserFilter
中,我只覆盖了一个方法:
@Override
@PreAuthorize("canISwitchToThisUser(#{request.getAttribute('userId')}")
protected Authentication attemptSwitchUser(HttpServletRequest request) throws AuthenticationException {
return super.attemptSwitchUser(request);
}
@PreAuthorize
在其他地方工作,但我想知道为什么它不在这里工作。请注意,我还传递了一个请求参数“ userId
”以及惯用的“ j_username
”。请注意,我可以切换用户,只是注释没有被处理。