2011-07-24 6 views
3

私は春のセキュリティプラグインのajaxログイン機能を利用したいと思います。Grails Ajax Login

loginControllerからJSONの成功応答がGWTクライアントに届くのを完全に止めました。

ドキュメントからわかるように、私のパラメータをurl/j_spring_security_checkに投稿する必要があり、春のセキュリティが正しい動作にリダイレクトされています。

私は自分のLoginControllerを調べると、実際のログインロジックと、すべてのログイン/ dbの処理が行われている私のための少しの魔法は何も見えません。 AjaxAuthを使用するのではなく、「X-Requested-With」ヘッダーを追加しても、Springのセキュリティは常にaction authにリダイレクトされます。私がurl/login/ajaxAuthに私の投稿をした場合、私はコントローラに書かれているので(私がなぜここに401を返す必要があるのか​​わからなくても)401が得意です。たぶん私は

私の基本的な質問:-)完全に間違って何かをやっている:私は、ログインロジックを見つけることができます

  • どのパラメータを指定する必要がありますか?
  • どのURLを使用する必要がありますか?
  • ユーザー名を使用したくない場合はどうすればいいですか?

ありがとうございました!

答えて

2

正しく実装されているように見えますが、多少のバグがあります。タイプミスのようです。ところで

:実際のコントローラの前にあなたの要求を処理

  1. それはimplemented at filterです。あなたの場合はUsernamePasswordAuthenticationFilter(またはRequestHolderAuthenticationFilter)になります。コントローラは、追加データのレンダリングにのみ使用されます。 Ajaxの認証に関しては、それはそれはそれはj_username & j_passwordを使用して、デフォルトでJSON応答に

  2. をレンダリングし、/login/ajaxSuccessを使用しています。そして、あなたは

  3. は、あなたが実装することができ、デフォルトでX-Request-Withヘッダ

  4. /j_spring_security_checkするのではなく、ajax=trueパラメータを使用することができ、独自のGrailsUserDetailsServiceresources.xml

で、名前 userDetailsServiceで、 setup it as a spring beanを(または GormUserDetailsServiceを拡張)、および

また、Spring Securityのロギングを有効にすることもできます。

log4j { 
    debug 'org.codehaus.groovy.grails.plugins.springsecurity', 
     'org.springframework.security' 
} 

多分私がのGrails 2.1.1を使用しています

+0

ありがとうございます。私は今いくつかの方法を試して、今私はポイントを取得しています:-)。私はパラメータを追加していないのですが、Grailsが解析できなかったJSONオブジェクトを投稿していました。私はもう一つ質問があります。どのように私の機能を記憶するのですか? gwtを使ってクライアント側にクッキーを作成しますが、grailsで作成してクライアントに保存することは可能ですか? – Gambo

2

参考にして、これと同じ問題に遭遇します。上記のすべてのことを試しましたが、まだajaxSuccessメソッドを呼び出すために私のAJAXログインを取得できませんでした。 しかし、失敗したときにはauthFail?ajax=trueと呼んでいました。、私のAJAXのログインフォームで

  1. 追加grails.plugins.springsecurity.successHandler.targetUrlParameter = 'ajaxUrl'私Config.groovy
  2. 追加<input type="hidden" name="ajaxUrl" value="/login/ajaxSuccess" />で、それは固定なぜ

わからない:

以上に掘りした後、ここで私がやったことですそれは私のために働くように思えた。

この解決策を投稿し、このチケットに解決策を求めるユーザーには、このソリューションを投稿するだけです。