2

Spring 3.1.1.RELEASE を使用しています。認証成功ハンドラー メソッドで元の要求オブジェクトにアクセスするにはどうすればよいですか? 春のセキュリティ フォームを送信するとき、ユーザー名、パスワード、および 3 番目のトークン (param name = "token") の 3 つのパラメーターを送信します。私はこれを試しました…</p>

@RequestMapping(value = "/authenticate")
public String authenticate() 
{
    final HttpServletRequest origRequest = 
                ((ServletRequestAttributes) RequestContextHolder.
                        currentRequestAttributes()).getRequest();
    String token = origRequest.getParameter("token");

ただし、リクエストを送信したときにそうではないことがわかっていても、値「token」は常にnullです。Spring セキュリティを構成する方法は次のとおりです...</p>

<beans:bean id="springboardUsernamePasswordUrlAuthenticationFilter" 
    class="org.collegeboard.springboard.dido.security.SpringboardUsernamePasswordUrlAuthenticationFilter">
    <beans:property name="filterProcessesUrl" value="/j_spring_security_check"/>
    <beans:property name="authenticationManager" ref="authenticationManager"/>
    <beans:property name="authenticationFailureHandler">
        <beans:bean class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler">
            <beans:property name="defaultFailureUrl" value="/login/failure"/>
        </beans:bean>
    </beans:property>
    <beans:property name="authenticationSuccessHandler">
        <beans:bean
            class="org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler">
            <beans:property name="defaultTargetUrl" value="/pdregistration/authenticate" />
        </beans:bean>
    </beans:property>
</beans:bean>

ご協力ありがとうございます - デイブ

4

1 に答える 1

2

もう遅い。認証が成功した後、ユーザーはSimpleUrlAuthenticationSuccessHandler によって /authenticateにリダイレクトされました。以前の HTTP リクエストにアクセスする必要がある場合は、authenticationSuccessHandlerに独自の実装を提供してください。この時点で、トークンを取得できます。

public class CustomAuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
        // grab your token here from request
        super.onAuthenticationSuccess(request, response, authentication);
    }
}

<beans:property name="authenticationSuccessHandler">
    <beans:bean
        class="com.domain.security.CustomAuthenticationSuccessHandler">
        <beans:property name="defaultTargetUrl" value="/pdregistration/authenticate" />
    </beans:bean>
</beans:property>
于 2013-02-01T15:51:50.803 に答える