我正在使用MVC5,我知道如果用户忘记了他的密码,那么MVC提供了忘记密码和重置密码的功能。 我的客户端服务器从互联网或邮件中断开,它位于防火墙后面,所以我不能使用忘记的密码,因为它可能会生成重置密码的链接,但无法将其邮寄给用户以方便重置密码。 请建议是否有任何方法通过简单地使用成员资格类的GetPassword方法来解密密码(以让用户知道他是否忘记了密码),例如它是如何在asp.net成员资格中可用的。如何在MVC5中解密密码?
谢谢
我正在使用MVC5,我知道如果用户忘记了他的密码,那么MVC提供了忘记密码和重置密码的功能。 我的客户端服务器从互联网或邮件中断开,它位于防火墙后面,所以我不能使用忘记的密码,因为它可能会生成重置密码的链接,但无法将其邮寄给用户以方便重置密码。 请建议是否有任何方法通过简单地使用成员资格类的GetPassword方法来解密密码(以让用户知道他是否忘记了密码),例如它是如何在asp.net成员资格中可用的。如何在MVC5中解密密码?
谢谢
据我知道有没有简单的方法在MVC5做到这一点,因为身份(成员的下一代)是使用密码而不是加密的密码散列。
密码被散列并作为散列存储在数据库中 - 通常它是单向操作(这意味着没有简单的方法来获取密码表单散列)。
多一点关于什么是哈希和盐,你可以在这里阅读:
这一步ECRYPT和解密在asp.net mvc5密码。
创建的类名Hashing
,粘贴此代码
创建控制器登录你过去的这个代码
using WebBcryptMVC.Models; //
using WebBcryptMVC.Util; // call folder name of Hashing class
namespace WebBcryptMVC.Controllers
{
public class LoginController : Controller
{
private DBLoginEntities db = new DBLoginEntities();
public ActionResult frmLogin()
{
return View("frmLogin", new tblLogin());
}
[HttpPost]
public ActionResult frmLogin(tblLogin account)
{
var currentAccount = db.tblLogins.First(a => a.UserName.Equals(account.UserName));
if ((currentAccount != null))
{
if (Hashing.ValidatePassword(account.Password, currentAccount.Password))
{
Session.Add("UserName", account.UserName);
//return View("~/Views/Home/frmHome.cshtml");
return RedirectToAction("frmHome", "Home");
}
else
{
ViewBag.error = "Invalid";
return View("frmLogin");
}
}
else
{
ViewBag.error = "Invalid";
return View("frmLogin");
}
}
试试这个代码中的“Membership.GetPassword(用户名,“”);' 可能会帮助你 – Bharat
我使用asp.net身份不memebership – goshan2011
没有办法“解密”的密码。你必须找到另一种方式来做密码重置。 – trailmax