3

私は Webアプリケーションj_acegi_security_checkにログインするために使用していますが、パラメーターもSpring受け入れているためGET、これは、次のコマンドでアプリケーションにログインできることを意味します。

<https://localhost:8080/webapp/j_acegi_security_check?j_username=***&j_password=***&loginButton=Login>

これは避けたい。リクエストのみを受け入れる必要がありPOSTます。これを行う方法?

4

1 に答える 1

1

デフォルトPOSTでは、SpringSecurity3.xはログインのリクエストのみを受け入れます。

postOnlyただし、次のパラメータを使用してこの動作を制御できます。org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter

(ただし、前に述べたように、のデフォルトpostOnlyはtrueです)


しかし、おそらく主な問題は、実際のSpring Security 3.xではなく、古いSpringacegiセキュリティを使用していることです。上記のステートメントが私の真実ではないよりも、これが事実です。だから私は更新することを強くお勧めします!

SpringACEGI1.0.xの場合

次のようなものattemptAuthenticationでメソッドをオーバーライドしてみてください。AuthenticationProcessingFilter

if (request.getMethod().equals("POST"))
   return super.attemptAuthentication(request);
else
   throw new AuthenticationServiceException("service accept only http post");

コメントを参照してください:onPreAuthentication()継ぎ目をオーバーライドすることも良い方法です

于 2012-09-07T06:56:56.967 に答える