在MVC 3应用程序中不需要用户注册密码

时间:2011-12-11 02:00:00

标签: asp.net-mvc-3 asp.net-membership

我正在开发一个只需要用户名进行注册而不是密码的应用程序。当用户创建“完整”帐户时,我们将让他们输入密码。 .NET成员资格模型中是否提供此功能,还是需要推出自己的解决方案?显然我想让用户名变得独一无二。

谢谢!

1 个答案:

答案 0 :(得分:2)

我在创建MVC 3网站时做了类似的事情,该网站允许用户使用他们的Facebook凭据登录。如果新用户出现并选择Login with Facebook我只为他们创建一个新的acocunt,但不要让他们输入密码。

通常,如果您使用标准的.NET成员资格,那么您可以在Register操作中执行此操作(

MembershipCreateStatus createStatus = _membershipService.CreateUser(model.UserName, model.Password, model.Email);

我选择做的是生成某种随机密码(例如,只生成一个新的GuidToString()),如下所示:

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;
        }
    }