2011-12-11 38 views
2

我正在研究的应用程序只需要用户名来注册,而不需要密码。当用户创建一个“完整”帐户时,我们会让他们输入一个密码。这种功能是否可以在.NET Membership模型中使用,还是需要推出我自己的解决方案?很明显,我想让用户名是唯一的。在MVC 3应用程序中不需要用户注册的密码

谢谢!

回答

2

我创建了一个允许用户使用他们的Facebook凭证登录的MVC 3网站时做了类似的事情。如果有新用户出现并选择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链接,我会生成一个通过电子邮件发送给他们的链接,他们可以从中选择一个新密码,所以一切都很好。

如果你想知道如何在不知道旧创建一个新的密码,这是你如何在标准的.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; 
     } 
    } 
相关问题