0

ユーザーに基づいて、ユーザーを切り替える権限があるかどうかを確認する必要があります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、1 つのメソッドのみをオーバーライドします。

    @Override
    @PreAuthorize("canISwitchToThisUser(#{request.getAttribute('userId')}")
    protected Authentication attemptSwitchUser(HttpServletRequest request) throws AuthenticationException {
        return super.attemptSwitchUser(request);

    }

@PreAuthorizeは他の場所で働いていますが、なぜここで働いていないのだろうか。userId慣例の ' ' とともにリクエスト パラメータ ' ' も渡していることに注意してくださいj_username。注釈が処理されていないというだけで、ユーザーを切り替えることができることに注意してください。

4

0 に答える 0