spring security:如何将@PreAuthorize应用于SwitchUserFilter

时间:2012-05-21 12:06:35

标签: spring spring-security spring-3

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

0 个答案:

没有答案