Забыл пароль — я что-то пропустил

#c# #asp.net #authentication #asp.net-membership #dotnetnuke

#c# #asp.net #аутентификация #asp.net-членство #dotnetnuke

Вопрос:

Я создал пользовательский элемент управления входом для dotnenuke. Сейчас я пытаюсь реализовать функцию «Забыли пароль», но я что-то упускаю. Я могу получить пароль по имени пользователя, но не могу найти, как отправить почту пользователю.

  UserInfo ui= UserController.GetUserByName(this.PortalId, "JohnDoe");

            string pass = UserController.GetPassword(ref ui, "");
  

Комментарии:

1. Что вы искали? Здесь есть много вопросов об отправке электронной почты с c # только по Stack Overflow.

2. Поэтому измените свой вопрос на «Как отправить электронное письмо из DotNetNuke?». «Я что-то пропустил» — не самый удачный вопрос.

3. Используете ли вы поставщика членства? Если это так, в нем есть встроенная функциональность для сброса паролей. Глядя на ваш код, кажется, подразумевается, что либо ваш пароль хранится в виде зашифрованных строк, либо — и это пугающий вариант — что вы храните их в виде открытого текста. В противном случае вы все равно не сможете получить пароль из базы данных. Пожалуйста, скажите мне, что вы не храните их в виде открытого текста.

4. Добавление к комментарию @Ira Rainey; пожалуйста, не отправляйте пользователю пароль в виде простого текста по электронной почте. 🙁 Это очень небезопасно, и вы рискуете, что ваш веб-сайт / приложение будет взломано.

5. @Jason и @Ira, по умолчанию DNN шифрует пароли (а не хэширует). Определенно не понятный текст, но и не супер потрясающий.

Ответ №1:

Посмотрите на DotNetNuke.Services.Mail.Mail класс. В зависимости от того, что вы хотите, вам может просто понадобиться вызвать Mail.SendMail(user, MessageType.PasswordReminder, portalSettings)