我正在使用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