在我的MVC應用程序中,用戶註冊有兩種方式實現;用戶註冊並由管理員批准;或者管理員可以創建一個用戶。我的問題是:是否可以發送臨時密碼,然後用戶必須在第一次登錄後更改它,或者我可以標記此用戶是否第一次使用外部認證。 我將不勝感激您的建議。Asp.net身份識別2.0臨時密碼
回答
可以定義一個UserAccount類是這樣的:
public class UserAccount
{
public int AccountId { get; set;}
public UserAccountState AccountState { get; set; }
public Guid ActivationCode { get; set; }
public string Password { get; set; }
}
哪裏UserAccountState是
public enum UserAccountState
{
PendingActivation = 0,
UsingTempPassword = 1
Normal = 2
}
當新用戶剛剛簽署了。你可以把他的賬戶到PendingActivation
狀態,並送他一個鏈接激活帳戶,像這樣
www.MySite.com/Activate?code=F3D17EE
當用戶點擊鏈接時,你匹配的代碼的用戶帳戶,並執行以下操作:
- 生成該帳戶的臨時密碼,例如「TempPass12」
- 更改賬戶狀態
UsingTempPassword
- 顯示以下信息,以用戶 「您的帳戶現在ACTIV ated。點擊這裏與您的臨時密碼TempPass12「
用戶登錄到您的站點臨時密碼後登錄,您的代碼應該檢測到UserAccountState
在UsingTempPassword
狀態,並隨後將用戶重定向到更改密碼頁面。
一個新密碼後,由用戶提供的帳戶可以付諸Normal
狀態。
在密碼錶中添加一列,如'ForceToChangePassword'。每次用戶登錄時檢查該列,如果它設置爲true,則將用戶重定向到更改密碼頁面。
我的意見是使用比使用新列,以及檢查的事情,每次登錄的用戶角色我們思考時不好表演。
創建三個新角色也可能是
- 創建 - 用戶由管理員創建
- 註冊 - 他們註冊了的自用戶
- 批准 - 由管理員
批准你的情況如果用戶註冊他們自己,然後將他們添加到ROLE'已註冊'。如果admin創建的用戶將其添加到ROLE 'Created'
。一旦管理員批准或用戶更改密碼第一次登錄,那麼你可以將它們添加到ROlE 'Approved'
。
然後,您可以處理用戶自行註冊和管理員創建控制器操作,以添加用戶以糾正ROIE。
已經存在一個名爲'EmailConfirmed'
的列,因此您可以將該列用於您的目的。當用戶在首次登錄時批准或成功更改密碼時更新該列。
正如您所知密碼字段爲空,以便您不需要插入臨時密碼(但您可以如果需要)。您可以將密碼字段保留爲空,並在用戶首次登錄時更新它。您需要更改視圖以支持此方案。
您可以使用asp.net標識框架支持的方法來實現此目的。
GenerateEmailConfirmationTokenAsync
GenerateEmailConfirmationToken
IsEmailConfirmedAsync
ConfirmEmailAsync
這基於角色的情況下可以幫助你進行分類取決於有角色的用戶和使用容易限制[Authorize(Role = "RoleName")]
訪問。
讓我知道你是否需要更多的細節。
希望這會有所幫助。
登錄是比較少見的情況。我不會考慮任何性能命中與一個額外的列顯着。無論如何,系統在登錄時都會爲你提供'ApplicationUser'對象。再多一欄也不會有什麼區別。而試圖重新定位用戶狀態的角色是一個糟糕的表演。如果需要實際的角色,比如「顧問」和「管理員」,那麼混合「已批准」就是破壞SRP。 – trailmax 2014-10-22 09:23:30
- 1. ASP.NET身份2.0解密Owin cookie
- 2. 更改ASP.NET身份密碼
- 3. 驗證asp.net身份密碼
- 4. ASP.NET MVC身份密碼RequiredLength
- 5. Asp.Net身份示例項目與網頁api,特別是asp.net身份2.0-beta
- 6. 擴展ASP.NET身份2.0
- 7. Ninject和ASP.NET 2.0身份
- 8. ASP.Net MVC身份忘記密碼
- 9. 在asp.net身份更改密碼驗證
- 10. 忘記密碼與asp.net身份
- 11. 識別客戶身份
- 12. 遷移從ASP.NET MVC 3 ASP.NET身份2.0
- 13. ASP.NET身份2.0與ASP.NET MVC 2
- 14. 識別加密密碼
- 15. 如何在Asp.net身份登錄時輸入密碼
- 16. 從Asp.Net身份1.0更新到2.0
- 17. ASP.Net身份2.0和Android的其餘API
- 18. ASP.NET身份2.0退出不起作用
- 19. ASP.NET身份2.0 IsInCompanyRole(角色,公司)
- 20. OmniAuth +身份忘記密碼
- 21. WSO2身份密碼恢復
- 22. 如何添加超級密碼到CakePHP 2.0身份驗證
- 23. 識別詐騙口令時密碼
- 24. 將帶有臨時密碼的現有用戶插入到.NET身份
- 25. 簡單的臨時身份驗證沒有用戶名或密碼
- 26. ASP.NET MVC2控制器無法識別身份驗證票據
- 27. asp.net web應用程序無法識別用戶身份
- 28. Asp.net身份識別2帳號單個條目
- 29. ASP.NET MVC中WIF(Windows身份基礎)的用戶名和密碼身份驗證
- 30. Swift Firebase身份驗證錯誤識別
只是重定向是不夠的。如果您登錄該用戶,他們將能夠繞過更改密碼錶單。如果您未登錄,他們將無法訪問更改密碼錶單。 – Alireza 2016-01-23 11:13:28