在我的MVC应用程序中,用户注册有两种方式实现;用户注册并由管理员批准;或者管理员可以创建一个用户。我的问题是:是否可以发送临时密码,然后用户必须在第一次登录后更改它,或者我可以标记此用户是否第一次使用外部认证。 我将不胜感激您的建议。Asp.net身份识别2.0临时密码
回答
可以定义一个UserAccount类是这样的:
public class UserAccount
{
public int AccountId { get; set;}
public UserAccountState AccountState { get; set; }
public Guid ActivationCode { get; set; }
public string Password { get; set; }
}
哪里UserAccountState是
public enum UserAccountState
{
PendingActivation = 0,
UsingTempPassword = 1
Normal = 2
}
当新用户刚刚签署了。你可以把他的账户到PendingActivation
状态,并送他一个链接激活帐户,像这样
www.MySite.com/Activate?code=F3D17EE
当用户点击链接时,你匹配的代码的用户帐户,并执行以下操作:
- 生成该帐户的临时密码,例如“TempPass12”
- 更改账户状态
UsingTempPassword
- 显示以下信息,以用户 “您的帐户现在ACTIV ated。点击这里与您的临时密码TempPass12“
用户登录到您的站点临时密码后登录,您的代码应该检测到UserAccountState
在UsingTempPassword
状态,并随后将用户重定向到更改密码页面。
一个新密码后,由用户提供的帐户可以付诸Normal
状态。
在密码表中添加一列,如'ForceToChangePassword'。每次用户登录时检查该列,如果它设置为true,则将用户重定向到更改密码页面。
我的意见是使用比使用新列,以及检查的事情,每次登录的用户角色我们思考时不好表演。
创建三个新角色也可能是
- 创建 - 用户由管理员创建
- 注册 - 他们注册了的自用户
- 批准 - 由管理员
批准你的情况如果用户注册他们自己,然后将他们添加到ROLE'已注册'。如果admin创建的用户将其添加到ROLE 'Created'
。一旦管理员批准或用户更改密码第一次登录,那么你可以将它们添加到ROlE 'Approved'
。
然后,您可以处理用户自行注册和管理员创建控制器操作,以添加用户以纠正ROIE。
已经存在一个名为'EmailConfirmed'
的列,因此您可以将该列用于您的目的。当用户在首次登录时批准或成功更改密码时更新该列。
正如您所知密码字段为空,以便您不需要插入临时密码(但您可以如果需要)。您可以将密码字段保留为空,并在用户首次登录时更新它。您需要更改视图以支持此方案。
您可以使用asp.net标识框架支持的方法来实现此目的。
GenerateEmailConfirmationTokenAsync
GenerateEmailConfirmationToken
IsEmailConfirmedAsync
ConfirmEmailAsync
这基于角色的情况下可以帮助你进行分类取决于有角色的用户和使用容易限制[Authorize(Role = "RoleName")]
访问。
让我知道你是否需要更多的细节。
希望这会有所帮助。
登录是比较少见的情况。我不会考虑任何性能命中与一个额外的列显着。无论如何,系统在登录时都会为你提供'ApplicationUser'对象。再多一栏也不会有什么区别。而试图重新定位用户状态的角色是一个糟糕的表演。如果需要实际的角色,比如“顾问”和“管理员”,那么混合“已批准”就是破坏SRP。 – trailmax 2014-10-22 09:23:30
- 1. ASP.NET身份2.0解密Owin cookie
- 2. 更改ASP.NET身份密码
- 3. 验证asp.net身份密码
- 4. ASP.NET MVC身份密码RequiredLength
- 5. Asp.Net身份示例项目与网页api,特别是asp.net身份2.0-beta
- 6. 扩展ASP.NET身份2.0
- 7. Ninject和ASP.NET 2.0身份
- 8. ASP.Net MVC身份忘记密码
- 9. 在asp.net身份更改密码验证
- 10. 忘记密码与asp.net身份
- 11. 识别客户身份
- 12. 迁移从ASP.NET MVC 3 ASP.NET身份2.0
- 13. ASP.NET身份2.0与ASP.NET MVC 2
- 14. 识别加密密码
- 15. 如何在Asp.net身份登录时输入密码
- 16. 从Asp.Net身份1.0更新到2.0
- 17. ASP.Net身份2.0和Android的其余API
- 18. ASP.NET身份2.0退出不起作用
- 19. ASP.NET身份2.0 IsInCompanyRole(角色,公司)
- 20. OmniAuth +身份忘记密码
- 21. WSO2身份密码恢复
- 22. 如何添加超级密码到CakePHP 2.0身份验证
- 23. 识别诈骗口令时密码
- 24. 将带有临时密码的现有用户插入到.NET身份
- 25. 简单的临时身份验证没有用户名或密码
- 26. ASP.NET MVC2控制器无法识别身份验证票据
- 27. asp.net web应用程序无法识别用户身份
- 28. Asp.net身份识别2帐号单个条目
- 29. ASP.NET MVC中WIF(Windows身份基础)的用户名和密码身份验证
- 30. Swift Firebase身份验证错误识别
只是重定向是不够的。如果您登录该用户,他们将能够绕过更改密码表单。如果您未登录,他们将无法访问更改密码表单。 – Alireza 2016-01-23 11:13:28