2013-03-06 59 views
2

我目前正在使用UsernamePasswordProvider在Play 2應用程序中設置SecureSocial模塊。SecureSocial 2/PlayFramework 2 - 將元素添加到IdentityObject並更改工作流程順序

註冊形式顯示聚集在Identity對象的實例的以下信息:

用戶名,姓,名,密碼,確認。密碼。

是否有可能將一些數據添加到Identity的物體,像例如性別的人的

或者,也許SecureSocial一直在設想單獨的數據庫/表對象中的詳細用戶數據。其次,默認情況下,「註冊」過程開始顯示單一輸入格式:「電子郵件」,旨在向用戶發送郵件以便繼續處理詳細的用戶數據。

我可以以某種方式配置庫,以便在所有用戶數據填充後發送郵件?直接顯示整個表單的含義。

+0

你使用的是scala還是java版本? – mericano1 2013-03-06 15:25:07

+0

@ mericano1我使用的是Scala版本,我沒有提到這個語言,因爲這個概念也會應用於Java :) – Mik378 2013-03-06 15:57:33

+0

@ mericano1我選擇創建自己的securesocial'Registration'控制器,以便提供我自己的實例包含許多用戶的數據,如電話,生日等等......當然,爲了使它工作,我還重新定義了相應的視圖(並將DefaultTemplatePlugins進行子類化以從其他方法實現中獲益),從而使我自己的'RegistrationInfo'包含所有領域。 – Mik378 2013-03-06 17:11:56

回答

1

你必須擴展到Identity Trait,這是社交用戶的最小代表(只是認爲社交網絡可能不會要求他們的成員指定他們的性別)。

在我的項目中,我想像上次登錄時間一樣向我的用戶添加信息。所以我剛剛創建了一個User類,擴展了Identity,並且我在數據庫中存儲了User數據。 SecureSocial以這種方式正常工作。

對於你的第二個問題,我認爲現在不可能配置插件使它像你說的那樣工作,但是你當然可以在github上提出這個請求。

+0

您必須更改註冊控制器才能指定您自己的用戶類而不是SocialUser實例,是不是?順便說一句,我發現在我的'UserService'子類中添加一些醜陋的強制轉換非常醜陋:'def save(identity:Identity){val user = identity.asInstanceOf [MyOwnUser] ....}因此,對於現在,我決定更改SecureSocial的所有文件(因爲緊密耦合),以便我自己的用戶類的使用變得更清潔,並滿足我的第二個要求:用戶數據以一個且僅有的一個表單呈現,然後通過郵件激活新創建的用戶帳戶。效果很好。 – Mik378 2013-03-18 09:57:38

+0

@ Mik378不,我沒有改變任何lib的。該服務足以在沒有任何演員的情況下執行所有操作。在你提到的'save'方法中,我首先通過在數據庫中檢索'User'(其中'User' extends'Identity')給定了所提供的'Identity'參數。然後我更新它,如果它存在或創建它。並返回更新/創建的用戶。因爲它擴展了'Identity',所以不需要劇組。 – teemoo 2013-03-18 16:47:05

+1

是的,我同意,但它只適用於獨立於任何上下文的額外數據:lastLoginTime(Date.now())。如果方法參數關閉到「身份」,你會如何通過,假設用戶的婚姻狀況?你需要另一個參數'save(identity:Identity,maritalStatus:String)'或者傳遞一個擴展Identity的對象,比如'MyOwnUser',擴展'Identity' ......因此,在這種情況下,我看不到我們如何離開SecureSocial代碼不變。 – Mik378 2013-03-18 17:55:55