0

我是Microsoft.AspNet.Identity的新手。我有一個網址令牌:Microsoft.AspNet.Identity MVC如何配置系統自動使用令牌登錄但無密碼

http://example.org/news/titlenew?userId=0f8fad5b-d9cb-469f-a165-70867728950e&token=abcxyzabczyieeieusjhjsyuwhjihsihywsuyhskuju

我的數據庫中有用戶信息,但沒有密碼。

我想:當我將這個url-token發送給某人,當他們點擊它時會進入我的頁面,系統會自動從url獲取該令牌,並與數據庫中的用戶進行身份驗證。

如果有效然後自動登錄到我的系統,否則進入登錄頁面。

我認爲它需要在startup.auth或IdentityConfig上配置一些東西,但我不知道它是如何實現的。請引導我,因爲我是身份新手。

+0

如果用戶沒有密碼,登錄頁面有什麼好處? –

+0

爲什麼不使用標識的常規註冊流程?註冊一個用戶,發送一個鏈接激活給用戶。用戶點擊鏈接激活並登錄。 –

+0

請理解,這只是一個客人。非會員。我想在他們邀請我參加活動時向他們展示一個頁面。 –

回答

0

其實你在暗示的是使用url登錄。您使用一個永遠不會更改或過期的標記。這是不安全的。只要用戶存在,知道url的任何人都可以訪問資源。所以基本上你繞開了AspNet Identity的目的:識別用戶。

您當然不希望僅基於此URL登錄用戶,冒着暴露的風險超過您的預期。

如果您查看註冊流程,您會看到您可以發送電子郵件驗證碼。但是您還會看到,ConfirmEmail方法具有「AllowAnonymous」屬性,並且用戶以後未登錄。這只是驗證電子郵件。

在授權用戶之前,您需要首先識別用戶。您可以使用憑據(本地登錄),也可以使用外部id提供程序,如Google或Facebook。

您也可以實現您發送一個代碼(一次性密碼)的電子郵件中點擊該鏈接後什麼,所以用戶在簽約之前把輸入驗證碼。

但如果你只是想顯示一個頁面,其中不包含敏感信息(只是個人信息),則不需要登錄用戶。您可以創建TitleNew方法(添加'AllowAnonymous'屬性),檢查URL中的代碼(如ConfirmEmail中的代碼),並根據url中的用戶標識顯示包含個人消息的頁面。

+0

我想我只會允許令牌工作一段時間。 你說的是真的,我喜歡。 –