2013-01-19 3 views
5

私は再生/スカラアプリケーションにSecureSocialを統合し始めましたが、異なるビュー間で行うリダイレクトは本当に好きではありません。ビューを使用しないセキュアソーシャルサービスの使用

例 - デフォルトのログインページからログインしようとします。間違ったパスを入力すると、別のページ(URL)にリダイレクトされますが、同じログインフォームが使用されます。唯一の違いは、エラーメッセージが表示されることです...

私は、ajaxを使用してデータを送信する私のメインページの隅に簡単なログインフォーム(ユーザ/パスワードプロバイダ)が必要です。このデータは検証されますエラーメッセージ/ sを表示するか、window.locationを変更するように応答します。 このフォームの次に、fb/twitterなどの他のプロバイダを使用するオプションを追加する、より高度なログインページへのリンクを貼ります。 しかし、そのページからは、詳細を提出するためにajaxを使いたいレスポンス。

私はSecureSocialのソースを参照しようとしましたが、そこで少し失われました。

SecureSocialの使い方を教えてもらえますか?

注:私は、自分の意見をカスタマイズすることに興味はないよそれはちょうどCSS /設計上の問題はありませんが、私はリダイレクトが続く通常のフォーム送信にAjaxlyなくログイン情報を処理したい...

答えて

2

後SecureSocialコードの中でもう少しうまくいくことで、私はそれがどのように動作するかをよりよく理解することができました。

play.pluginsファイルにリストされているプロバイダをseperatlyで使用すると、自分のログイン/認証コードからユーザー情報を認証できます。プロバイダが必要とする適切なパラメータを送信してください。

SecureSocialのProviderControllerクラスが、パラメータに基づいて、使用するプロバイダを動的に決定する方法が気に入っています。しかし、私はリダイレクトされたレスポンスが好きではありませんでした。私はajaxリクエストにいくつかのデータで応答し、クライアント側でそれを処理させたいと思っていました。私自身Auth.scalaファイル(コントローラー)へ

かなりのコピーProviderControllerコードのすべて:

は、これが私の解決策です。 "case ex、case _"に関連したリダイレクトを変更し、ユーザーに関連するSecureSocialセッションキーを追加する際に成功した認証にリダイレクトを保持しました。 私のルートファイルからすべてのSecureSocial関連ルートを削除しました。 logintype(userpass/google/fb/etc ...)に隠しフィールドを追加し、ログイン用のajax投稿を設定して、Authコントローラへの投稿と一緒に送信します。

ここでさらに情報コメントが必要な場合は、回答を編集します。

+0

私はポップアップでログイン画面を表示しているので、基本的にユーザーがログインまたはキャンセルした場合、ページをリロードしたくない(ユーザーの入力を失う)...ポップアップを閉じて、必要に応じてログイン状態を更新したいだけです。私はこれを達成するためにAjaxログインが必要だと思います。 – Ixx

+0

多少遅れて申し訳ありません。うん、あなたはajaxを必要とし、ページの通常のリクエストとリダイレクトを使ってソーシャルワークを確保する必要があります...結局私はそれをやめ、auth20モジュールからインスピレーションを得た独自のカップルクラスを作成しました。それほど複雑ではなく、最も柔軟な方法です:) – samz

+0

私はまったく同じ問題を抱えています。私は、Playアプリケーション(SecureSocialカスタムテンプレートを含む)からすべてのHTMLテンプレートを削除し、それらをJSON/JavaScriptに置き換えたいと思います。私はSecureSocialのソースを少し改造し始めました...私は自分のソリューションを作成する価値があると思うので、ユーザー名/パスワードプロバイダが必要なだけなので、どのように問題を解決したかについていくつかのヒントを教えてください。まともな認証APIを書いて私を助ける良いチュートリアルやサンプルがありますか?ありがとう。 – j3d