私がしたいことは、ログイン ページで http パラメータを読み取り、AuthenticationProviderlogin.html?param=value
に渡すことです。value
私の考えは、どうにかvalue
して隠しパラメータを保存することでしたが、それを渡す方法はまだわかりません。これは可能ですか?どうすればそれを行うことができますか?
編集: Sanath のアドバイスに従い、いくつか読んだ後、ようやく問題を解決することができました。
私がしたいことは、ログイン ページで http パラメータを読み取り、AuthenticationProviderlogin.html?param=value
に渡すことです。value
私の考えは、どうにかvalue
して隠しパラメータを保存することでしたが、それを渡す方法はまだわかりません。これは可能ですか?どうすればそれを行うことができますか?
編集: Sanath のアドバイスに従い、いくつか読んだ後、ようやく問題を解決することができました。
私は次のことを行いましたが、最終的には魅力的に機能しました。
Bean 構成ファイルに次のように入力する必要がありました。
<http auto-config="true>
...
<form-login ... authentication-details-source-ref="myWebAuthDetSource"/>
...
</http>
<beans:bean id="myWebAuthDetSource" class="com.my.pack.age.MyWebAuthDetSource"/>
...
WebAuthenticationDetailsSource
次に、実装を次のように設定しました。
public class MyWebAuthDetSource implements AuthenticationDetailsSource<HttpServletRequest, MyWebAuthDets> {
public MyWebAuthDetSource buildDetails (HttpServletRequest context) {
return new MyWebAuthDets(context);
}
}
AuthenticationDetails
次に、次のような実装を取得しました。
public class MyWebAuthDets extends WebAuthenticationDetails {
private final String parameter;
public MyWebAuthDets(HttpServletRequest request) {
super(request);
this.parameter = request.getParameter("paramId");
}
}
次に、認証プロセスはログイン フォームからの送信時に取得したものだけを処理するという最も単純な事実を見落としているため、単純に login.jsp に次の行を追加する必要がありました。
...
<form id="j_spring_security_check" ... >
<input type="hidden" name="paramID" value="${param['paramID']}" />
...
</form>
...
そしてそれだけでした。これで、 を追加してからauthenticationProvider
パラメータを取得できます。.getDetails()
authenticationToken
ありがとう@Sanath。