2017-10-18 135 views
0

我正在構建2個MVC應用程序,並將使用IdentityServer作爲單一登錄身份驗證提供程序。通過遵循IdentityServer網站的示例代碼,我可以使身份驗證正常工作。但是現在我對如何在MVC應用程序中註冊新用戶感到困惑。註冊使用IdentityServer4與多個客戶端的新用戶的正確方法是什麼?

例如在MVC 1中,我有一個安全的控制器操作。現在訪問此操作將被重定向到IdentityServer登錄頁面。如果用戶選擇了外部登錄提供程序併成功登錄,那麼用戶將被重定向到IdentityServer的「註冊」頁面,詢問用戶是否想要註冊。如果用戶點擊「註冊」,則成功重定向到安全操作。到目前爲止,示例代碼已經完成了所有這些。但我的問題是,MVC1 & MVC2需要更多關於用戶註冊的信息。我如何提示用戶輸入這些附加信息?將這些信息輸入IdentityServer寄存器頁面是不可行的,因爲MVC需要不同的信息。但是,如果我有一個MVC1 & MVC2的註冊頁面,那我該如何強制用戶完成註冊?用戶通過IdentityServer進行身份驗證後,他將直接返回到最初請求的Url。我無法在每個控制器操作中都有代碼來驗證經過身份驗證的用戶是否已完成詳細註冊。

一個理想的方法是,一旦用戶通過IdentityServer進行身份驗證,我可以檢查此用戶是否已在本地MVC用戶數據庫中註冊。如果不是,則將用戶重定向到本地MVC註冊頁面,然後返回到最初請求的Url。如何做到這一點,或者有更合適的方法來做到這一點?

回答

0

但我的問題是,MVC1 & MVC2需要一些更多的信息,關於 用戶註冊。

要檢索其他用戶信息,您可以依賴用戶聲明獲取其他用戶信息。否則,有一個叫端點UserInfo Endpoint

但是,如果我有MVC1 & MVC2一個註冊頁面,那麼如何才能我強迫 用戶完成註冊?

基於CLIENT_ID你可以改變註冊視圖

我不能在每一個控制器動作的代碼來驗證 驗證用戶是否已經完成了詳細的登記。

您可以創建一個自定義過濾器來驗證。但是,我想說盡量保持在IdS4項目

用戶相關的細節,我可以檢查是否該用戶已經在當地MVC 用戶數據庫被註冊。如果不是,則將用戶重定向到本地MVC 註冊頁面,然後返回到最初請求的Url。 如何完成,或者有更合適的方法來做到這一點?

如果你認爲,這些用戶信息將只能用於此客戶端,那麼你可以採取這種方法。

但是,如果可能的話,您要求在用戶註冊頁面上提供所有必需的詳細信息,而不會傷害mvc1用戶的信息。但有時候這是不可能的(例如,內部用戶與外部用戶)。如果是針對內部用戶,那麼我想最好有一個單獨的管理界面,用戶可以添加額外的信息。

無論如何,如果你想把所有的東西都保存在Id服務器的一個用戶註冊頁面上,我會在客戶端表格上添加一個額外的標誌,這將表明顯示額外的文件。希望這可以幫助你。

+1

MJK,謝謝你的回答。 –

相關問題