Я сделал нечто подобное при создании сайта MVC 3, который позволяет пользователям входить в систему со своими учетными данными Facebook. Если приходит новый пользователь и выбирает Login with Facebook
, я просто создаю для него новый акцент, но не заставляю его вводить пароль.
Обычно, если вы используете стандартный членский состав .NET, вы делаете это (среди прочего) в действии Register
:
MembershipCreateStatus createStatus = _membershipService.CreateUser(model.UserName, model.Password, model.Email);
Я решил создать какой-то случайный пароль (например, просто сгенерировать новый Guid
и ToString()
it), например:
model.Password = Guid.NewGuid().ToString();
Теперь у нас есть ситуация, когда у человека есть пароль, но никто в мире не знает, что это такое . Это не имеет значения для моего случая, поскольку они входят в систему с помощью Facebook. Однако, если они хотят прервать соединение с Facebook, они могут просто щелкнуть ссылку Forgotten Password
, и я сгенерирую ссылку, которая будет отправлена им по электронной почте, из которой они смогут выбрать новый пароль, так что все хорошо.
Если вы хотите знать, как создать новый пароль, не зная старого, вот как вы можете сделать это в стандартном поставщике членства .NET:
public bool ResetPassword(string userName, string newPassword)
{
try
{
MembershipUser user = _provider.GetUser(userName, true);
// Create a new password and store it for a moment
string resetPassword = user.ResetPassword();
// Now set the new password, for which we need that new one we just generated...
return user.ChangePassword(resetPassword, newPassword);
}
catch
{
return false;
}
}