我正在开发一个只需要用户名进行注册而不是密码的应用程序。当用户创建“完整”帐户时,我们将让他们输入密码。 .NET成员资格模型中是否提供此功能,还是需要推出自己的解决方案?显然我想让用户名变得独一无二。
谢谢!
答案 0 :(得分:2)
我在创建MVC 3网站时做了类似的事情,该网站允许用户使用他们的Facebook凭据登录。如果新用户出现并选择Login with Facebook
我只为他们创建一个新的acocunt,但不要让他们输入密码。
通常,如果您使用标准的.NET成员资格,那么您可以在Register
操作中执行此操作(
MembershipCreateStatus createStatus = _membershipService.CreateUser(model.UserName, model.Password, model.Email);
我选择做的是生成某种随机密码(例如,只生成一个新的Guid
和ToString()
),如下所示:
model.Password = Guid.NewGuid().ToString();
现在我们遇到的情况是这个人有密码但世界上没有人知道它是什么。这与我的情况无关,因为他们正在使用Facebook登录。但是,如果他们想放弃他们的Facebook连接,他们只需点击Forgotten Password
链接,我就会生成一个通过电子邮件发送给他们的链接,他们可以从中选择一个新密码,所以一切都很顺利。 / p>
如果您想知道如何在不知道旧密码的情况下创建新密码,那么您可以在标准.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;
}
}