我必须根据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
”。请注意,我可以切换用户,只是没有处理注释。