2013-01-19 67 views
5

我開始在我的play/scala應用中集成SecureSocial,但我並不十分喜歡它在不同視圖之間的所有重定向。在不使用視圖的情況下使用安全社會服務

例子 - 嘗試登錄從它的默認登錄頁面,如果你把一個錯誤的傳球,你將被重定向到不同的網頁(URL),但具有相同的登錄表單。唯一不同的是,有一個錯誤信息...

我想要一個簡單的登錄窗體(用戶/密碼提供者)在我的主頁的角落提交它的數據使用Ajax,這個數據驗證在服務器上,並且顯示錯誤消息或更改window.location。 在此表單旁邊,我會放入一個鏈接,轉到更高級的登錄頁面,添加使用其他提供程序(如fb/twitter等)的選項。 但是,從該頁面我也想使用ajax提交詳細信息並獲取響應。

我試圖瀏覽SecureSocial源代碼,但在那裏輸了一些。

任何人可以給我一個想法如何使用SecureSocial的,但沒有使用它的任何意見?

注:我沒有興趣來定製自己的觀點,這不只是一個CSS /設計問題,我要處理的登錄信息Ajaxly和不正常的形式提交,然後重定向...

回答

2

後更多的在SecureSocial代碼中翻找,我對它的運行有了更好的理解。

你可以使用任何你在play.plugins列出的文件seperatly從自己的登錄/授權碼authenthicate用戶的信息的提供者。只要確保您發送供應商需要的正確參數即可。

我喜歡SecureSocial的ProviderController類根據參數動態決定使用哪個提供程序的方式。但我不喜歡它所做的迴應 - 重定向..我想用一些數據迴應ajax請求,並讓客戶端js處理它。

這是我的解決方案:

幾乎複製所有的ProviderController代碼我自己Auth.scala文件(控制器)。 更改了與「case ex,case _」相關的重定向,保持重定向成功auth,因爲它添加了與用戶相關的SecureSocial會話密鑰。 從我的路由文件中刪除了所有與SecureSocial相關的路由。 用logintype(userpass/google/fb/etc ...)添加一個隱藏字段,並配置我的登錄ajax post,並將其與帖子一起發送到我的身份驗證控制器。

如果您在這裏需要更多信息,我會編輯答案。

+0

我感興趣......基本上,因爲我顯示在彈出的登錄界面,如果用戶登錄或取消約會,我不想重新加載頁面(而失去了用戶的輸入)...我只想關閉彈出窗口並在必要時更新登錄狀態。我想我需要一個Ajax登錄來實現這一點。 – Ixx

+0

對不起有些遲到的評論。是的,你需要ajax和安全的社會工作與頁面正常請求和重定向...最終我停止使用它,並創建了auth20模塊啓發我自己的幾個auth類。這不是太複雜,而且最靈活的方式:) – samz

+0

我有完全相同的問題。我想從我的Play應用程序(包括SecureSocial自定義模板)中刪除所有HTML模板,並將其替換爲JSON/JavaScript。我開始重新修改SecureSocial資源...但因爲我只需要一個用戶名/密碼提供者,我認爲值得創建我自己的解決方案。你能否提供一些關於你如何解決問題的提示?有沒有什麼好的教程或示例可以幫助我寫出體面的auth api?謝謝。 – j3d

相關問題