3

私がしたいことは、ログイン ページで http パラメータを読み取り、AuthenticationProviderlogin.html?param=valueに渡すことです。value私の考えは、どうにかvalueして隠しパラメータを保存することでしたが、それを渡す方法はまだわかりません。これは可能ですか?どうすればそれを行うことができますか?

編集: Sanath のアドバイスに従い、いくつか読んだ後、ようやく問題を解決することができました。

4

1 に答える 1

6

私は次のことを行いましたが、最終的には魅力的に機能しました。

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。

于 2013-03-19T07:45:51.427 に答える