Подтвердить что ты не робот

Как сделать reset или сменить пароль с помощью SimpleMembership в MVC4?

Я пишу веб-приложение с использованием интернет-шаблона MVC4. Мне действительно не нужно было ничего сложного для управления пользователями, поэтому я пошел со стандартным SimpleMembershipProvider. Я инициализирую членство в App_Start, и у меня есть роли и пользователи, настроенные и работающие. Я не использую SSO или другие функции OAuth. Теперь у меня есть тестер, который забыл свой пароль, и после того, как я весь день понял, я понятия не имею, как просто reset его пароль или изменить его!

Я прочитал документацию и обнаружил, что функция ResetPassword не поддерживается при использовании SimpleMembership. Мой вопрос: как я:

  • переключиться с SimpleMembership на стандартное членство, которое использует таблицы и формат SimpleMembership.
  • reset пароль пользователя к тому, что я указываю?

Я нашел настройки 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);
4b9b3361

Ответ 1

Чтобы сделать это правильно, вам нужно будет настроить ссылку для восстановления электронной почты. Но здесь вызовы 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