Использование поставщика членства для частного сайта
Я не могу быть первым, у кого возникла эта проблема, я, должно быть, упускаю простое решение. Я унаследовал непубличный сайт ASP.NET, защищенный с помощью проверки подлинности форм с помощью SqlMembershipProvider для защиты сайта. Все отлично работает с пользователями, которые разработчик вручную добавил в базу данных.
Мне нужно добавить административную страницу, чтобы позволить привилегированным пользователям добавлять и изменять учетные записи пользователей. Провайдер членства позволяет очень легко создать его, но проблема, с которой я столкнулся с SqlMembershipProvider, сейчас - это вопрос / ответ. Администратор должен иметь возможность сбросить пароли других пользователей на временный пароль и создать новую учетную запись пользователя (также с временным паролем). Для сброса пароля требуется либо ответ на вопрос пользователя, либо его текущий пароль.
Конечно, я мог бы просто добавить что-то вроде "вопрос" и "ответ" для всех учетных записей, и это сработало бы, но я обеспокоен рисками безопасности, связанными с этим. Возможно, я слишком параноик. Создание настраиваемого поставщика членства, помимо большой работы, не решает эту проблему, поскольку база поставщиков членства предъявляет те же требования.
Спасибо.
1 ответ
Для сброса пароля требуется либо ответ на вопрос пользователя, либо его текущий пароль
Если вы в настоящее время не используете вопрос / ответы, вы можете переопределить это в файле web.config.
requiresQuestionAndAnswer="false"
После этого вы можете сделать:
string requesteduserGUIDstring = "some GUID";
Guid UserID = new Guid(requesteduseridstring.ToUpper());
MembershipUser mu = Membership.GetUser(UserID);
mu.ChangePassword(mu.ResetPassword(), tbNewPassword.Text);
Если вы используете вопрос / ответы, вы можете добавить второго провайдера в ваш web.config и установить только для этого провайдера тот же переопределенный код и использовать ТОЛЬКО этого провайдера для функции сброса пароля,