2016-09-26 93 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"); 
          } 
         }