2016-09-26 123 views
-1

我正在使用MVC5,我知道如果用户忘记了他的密码,那么MVC提供了忘记密码和重置密码的功能。 我的客户端服务器从互联网或邮件中断开,它位于防火墙后面,所以我不能使用忘记的密码,因为它可能会生成重置密码的链接,但无法将其邮寄给用户以方便重置密码。 请建议是否有任何方法通过简单地使用成员资格类的GetPassword方法来解密密码(以让用户知道他是否忘记了密码),例如它是如何在asp.net成员资格中可用的。如何在MVC5中解密密码?

谢谢

+0

试试这个代码中的“Membership.GetPassword(用户名,“”);' 可能会帮助你 – Bharat

+0

我使用asp.net身份不memebership – goshan2011

+1

没有办法“解密”的密码。你必须找到另一种方式来做密码重置。 – trailmax

回答

1

据我知道有没有简单的方法在MVC5做到这一点,因为身份(成员的下一代)是使用密码而不是加密的密码散列。

密码被散列并作为散列存储在数据库中 - 通常它是单向操作(这意味着没有简单的方法来获取密码表单散列)。

多一点关于什么是哈希和盐,你可以在这里阅读:

0

这一步ECRYPT和解密在asp.net mvc5密码。

  1. 创建的类名Hashing,粘贴此代码

  2. 创建控制器登录你过去的这个代码

    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"); 
          } 
         }