我有一个重置密码页面:
当用户填写详细信息并单击“重置密码”按钮时.调用以下控制器:
public ActionResult ResetPassword(ResetPassword model) { ... return RedirectToAction("logout"); }
解决方法
所以我回到家,决定整理一些代码.给我看代码!!!
我会使用一个处理程序,因此验证总是在用户第一次访问应用程序时完成,并且在一个地方为每个操作方法访问完成.
这个想法是当用户重置密码时,应用程序记录用户重置密码并且第一次没有登录并注销用户.
user.HasResetPassword = true; user.IsFirstLoginAfterPasswordReset = false;
当用户登录时,应用程序将验证用户之前是否已重置其密码,并且现在是第一次登录.如果这些陈述有效,则应用程序会更新其记录,表示您尚未重置密码,并且您尚未首次登录.
步骤1
第2步
在Models文件夹中添加一个AuthHandler.cs类,其实现如下.
在此阶段,您将验证用户是否已重置密码,并且自密码重置以来第一次未登录.如果是这样,请将用户重定向到登录名.
第3步
在RouteConfig.cs中调用AuthHandler,以便为每个传入的应用程序的http请求调用它.
步骤4
在ResetPassword方法中添加如下实现.在此步骤中,当用户重置其密码更新属性时,他们已重置密码并且尚未首次登录.请注意,用户在重置密码时也会明确注销.
第5步
在Login方法中添加以下实现.在此步骤中,如果用户成功登录,请验证其密码已重置且第一次记录的密码为false.如果满足所有条件,请更新数据库中的属性,以便在用户以后重置密码时,属性处于准备状态.因此,一种循环确定并更新密码重置的状态,并在重置密码后首次登录.
最后
您的AspnetUsers表应如下所示
注释