Как мне сбросить или изменить пароли, используя SimpleMembership в MVC4?

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

Я прочитал документацию и обнаружил, что функция ResetPassword не поддерживается при использовании 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);

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

Другие вопросы по тегам