2

ログインページに追加のパラメーターを渡したいです。私のアプリケーションコンテキストは次のようになります。たとえばlocation、ログインフォームにパラメータを追加したいとします。

<context:annotation-config />
<context:component-scan base-package="com.myetest.app" />

<sec:http entry-point-ref="apiAuthenticationEntryPoint" create-session="always">
    <sec:form-login login-processing-url="/login" 
        username-parameter="username" 
        password-parameter="password" 
        authentication-failure-handler-ref="apiAuthenticationFailureHandler"
        authentication-success-handler-ref="apiLoginSuccessHandler" />
    <sec:logout logout-url="/logout" success-handler-ref="apiLogoutSuccessHandler"/>

    <sec:intercept-url pattern="/receipt/**" access="ROLE_ANONYMOUS"/>
    <sec:intercept-url pattern="/internal/**" access="ROLE_ANONYMOUS"/>
    <sec:intercept-url pattern="/system/**" access="ROLE_ANONYMOUS"/>
    <sec:intercept-url pattern="/**" access="ROLE_SELLER"/>

    <sec:custom-filter ref="apiPreAuthFilter" before="PRE_AUTH_FILTER"/>
    <sec:custom-filter ref="apiFirstFilter" before="LAST"/>
</sec:http>

<sec:authentication-manager alias="authenticationManager">
    <sec:authentication-provider ref="apiAuthenticationProvider"/>
</sec:authentication-manager>

<bean id="apiAuthenticationProvider" class="com.myetest.app.security.ApiAuthenticationProvider" />
<bean id="apiAuthenticationEntryPoint" class="com.myetest.app.security.ApiAuthenticationEntryPoint"/>
<bean id="apiLoginSuccessHandler" class="com.myetest.app.security.ApiLoginSuccessHandler"/>
<bean id="apiLogoutSuccessHandler" class="com.myetest.app.security.ApiLogoutSuccessHandler"/>
<bean id="apiAuthenticationFailureHandler" class="com.myetest.app.security.ApiAuthenticationFailureHandler"/>
<bean id="apiPreAuthFilter" class="com.myetest.app.security.ApiPreAuthenticationFilter" />

<bean id="apiFirstFilter" class="com.myetest.app.security.ApiFirstFilter"/> 

私のAuthenticationProviderはこんな感じです。

public class ApiAuthenticationProvider implements AuthenticationProvider {

}
4

1 に答える 1

2

考えられる解決策(セクション1)とここでいくつかの説明を見ましたか。ソリューションはUsernamePasswordAuthenticationFilterの使用に基づいています。簡単に言えば、本文からUsernamePasswordAuthenticationFilter抽出できる場所をオーバーライドして、カスタム処理を行うことができます。または、フォーム データを受け入れるカスタム MVC コントローラーを追加し、 custom を使用して手動で呼び出すこともできます。お役に立てれば。locationHttpServletRequestUsernamePasswordAuthenticationFilter.attemptAuthenticationAuthenticationManagerAuthenticationProvider

于 2013-11-14T14:16:19.670 に答える