在带有SimpleMembership的MVC 4中,所有这些函数都带有您在Visual Studio中创建的默认webbapp。
我想知道在哪里可以使用新的ASP.NET身份会员系统为MVC 5找到相同的内容?在谷歌搜索结果中是否有一些官方博客或某些内容隐藏起来?
UPDATE2 :ASP.NET Identity 2.0 RTM已发布。忘记密码包含在样本/模板中。 http://blogs.msdn.com/b/webdev/archive/2014/03/20/test-announcing-rtm-of-asp-net-identity-2-0-0.aspx
答案 0 :(得分:2)
我们正在努力将这些功能添加到ASP.NET Identity系统和MVC 5模板中。
答案 1 :(得分:2)
我也碰到了这个。为了解决这个问题,我在AccountController.cs
(以及相应的视图)中创建了一些控制器操作来处理它。
以下是重置用户密码的实际行:
[AllowAnonymous]
[HttpPost]
public ActionResult ResetForgottenPassword(string key, ManageUserViewModel model)
{
var user = db.Users.SingleOrDefault(u => u.ForgotPasswordCode != null && u.ForgotPasswordCode == key);
if (user == null || !user.ForgotPasswordDate.HasValue || user.ForgotPasswordDate.Value.AddDays(1) < DateTime.UtcNow)
return new HttpUnauthorizedResult();
ModelState state = ModelState["OldPassword"];
if (state != null)
{
state.Errors.Clear();
}
if (ModelState.IsValid)
{
if (UserManager.HasPassword(user.Id))
UserManager.RemovePassword(user.Id);
IdentityResult result = UserManager.AddPassword(user.Id, model.NewPassword);
if (result.Succeeded)
{
//Clear forgot password temp key
user.ForgotPasswordCode = null;
user.ForgotPasswordDate = null;
db.SaveChanges();
//Sign them in
var identity = UserManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = false }, identity);
return RedirectToAction("Manage", new { Message = ManageMessageId.SetPasswordSuccess });
}
else
{
AddErrors(result);
}
}
ViewBag.ForgotPasswordCode = key;
return View(model);
}
某些自定义项是用户对象上的新字段:
ForgotPasswordCode
和ForgotPasswordDate
在整个“重置密码电子邮件”过程中跟踪用户。ViewBag
中传递密钥。db
变量是从基本控制器继承的数据库上下文类的属性。DateTime.UtcNow
更改为DateTime.Now
。可能不是最好的解决方案,但它是一个相当快速和简单的补丁。
答案 2 :(得分:1)
你可以自己建立一个重置密码(不确定这是更好的选择,但总比没有好)
使用:
生成哈希var newPwdHash = new PasswordHasher().HashPassword(newPasswordPlain)
并替换为用户的密码属性
答案 3 :(得分:0)
如果您不能等待ASP.NET Identity Team添加此功能,您可以从open source project SimpleSecurity获得密码重置的实现。只需看看ResetPassword action on the AccountController即可。你可以read about how the password reset was implemented here。虽然本文引用了SimpleMembership,但SimpleSecurity使用相同的API来支持MVC应用程序中的SimpleMembership或ASP.NET Identity。