2013-02-25 49 views
18

我一直在使用MVC4 Internet模板編寫Web應用程序。我真的不需要任何複雜的用戶管理,所以我去了默認的SimpleMembershipProvider。我正在初始化App_Start的成員資格,並且我設置了角色和用戶並開始工作。我沒有使用SSO或任何其他OAuth功能。現在我有一個已經忘記密碼的測試人員,整天Google搜索後,我意識到我不知道如何重置密碼或更改密碼!如何在MVC4中使用SimpleMembership重置或更改密碼?

我已通讀文檔,發現ResetPassword功能is not supported if using SimpleMembership。我的問題是,我怎麼可以:

  1. 開關從SimpleMembership到使用SimpleMembership表格和格式
  2. 用戶的密碼重置的東西我指定標準的會員資格?

我發現web.config設置(理論上)設置成員提供商使用SimpleMembership,但我不知道如何指定表使用(假設這是正確的方式來做到這一點)。

的web.config部分:

<roleManager enabled="true" defaultProvider="SimpleRoleProvider"> 
    <providers> 
    <clear/> 
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/> 
    </providers> 
</roleManager> 
<membership defaultProvider="SimpleMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
    </providers> 
</membership> 

和當前InitializeDatabaseConnection,我(想)我需要在web.config:

WebSecurity.InitializeDatabaseConnection("UPEFSSecurity", "Datamart_User", "UserId", "UserName", autoCreateTables: true); 
+0

http://stackoverflow.com/questions/13212938/forgot-password-email-confirmation-in-asp-net-mvc-webmatrix/ 16985811#16985811 這將滿足您的要求:) – 2013-06-10 09:47:01

回答

45

爲此正常,你將需要設置電子郵件恢復鏈接。但這裏的API調用,你會做:

var token = WebSecurity.GeneratePasswordResetToken(username); 
// create a link with this token and send email 

// link directed to an action with form to capture password 
WebSecurity.ResetPassword(token, password); 

http://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.resetpassword(v=vs.111).aspx

+2

謝謝!這似乎很好 – Elsimer 2013-02-25 22:59:34

+0

我喜歡你在那裏做的! ;-) – 2015-02-27 18:18:39