ASP.NET MVC4에서 잊어 버린 암호 기능을 구현하고 있지만 사용자가 암호를 재설정하도록 허용 할 수 없습니다.ASP.NET MVC4의 암호 기능을 잊어 버렸습니다.
내 MVC 응용 프로그램은 암호를 잊어 버린 사용자의 로그인 페이지에 RECOVER 암호 링크를 표시합니다. 응용 프로그램의 첫 번째 부분은 잘 작동하고 메일은 사용자에게 전송되지만 나중에 사용자가 자신의 암호를 변경하려면 작동하지 않습니다.
이 내 비밀번호 찾기 컨트롤러 액션 방법 :
[AllowAnonymous]
public ActionResult ForgotPassword()
{
return View();
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult ForgotPassword(string UserName)
{
//Check user existence
var user = Membership.GetUser(UserName);
if (user == null)
{
TempData["Message"] = "User Not exist.";
}
else
{
//Generate password token
var token = WebSecurity.GeneratePasswordResetToken(UserName);
//Create URL with above token
var resetLink = "<a href='" + Url.Action("ResetPassword", "Account", new { un = UserName, rt = token }, "http") + "'>Reset Password</a>";
//Get user emailid
UsersContext db = new UsersContext();
var emailid = (from i in db.UserProfiles
where i.UserName == UserName
select i.EmailId).FirstOrDefault();
//Send mail
string subject = "Password Reset Token";
string body = "<b>Please find the Password Reset Token</b><br/>" + resetLink;
//Edit it
try
{
SendEMail(emailid, subject, body);
TempData["Message"] = "Mail Sent.";
}
catch (Exception ex)
{
TempData["Message"] = "Error occured while sending email." + ex.Message;
}
}
return View();
}
이 내 암호보기 잊었입니다 :
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<fieldset>
<legend>Forgot Password Form</legend>
<ol>
<li>
@Html.Label("User Name", new { @for = "UserName" })
@Html.TextBox("UserName")
<span style="color:red;">@TempData["Message"]</span>
</li>
</ol>
<input type="submit" value="Recover" />
</fieldset>
}
비밀번호 분실보기 페이지는 사용자가 자신의 사용자 이름을 입력 할 수 있습니다. 사용자 이름과 이메일 ID를 받고 URL을 작성하고 사용자에게 메일을 보냅니다. 이 부분은 성공적으로 실행됩니다. 이제 사용자가 내 비밀번호 재설정 페이지로 리디렉션됩니다. 여기에서 사용자가 새 암호를 입력하고 데이터베이스를 업데이트 할 수있게하려고합니다. 리셋 컨트롤러 동작 및보기 페이지는 어떻게해야합니까?
가 난 다음 컨트롤러 액션 사용하여 이전 암호를 표시 할 수 있습니다 : (? 내가 잘못 건가) 을
[AllowAnonymous]
public ActionResult ResetPassword(string un, string rt)
{
UsersContext db = new UsersContext();
//Get userid of received username
var userid = (from i in db.UserProfiles
where i.UserName == un
select i.UserId).FirstOrDefault();
var yrpassword = (from k in db.webpages_Memberships
where k.UserId == userid
select k.Password);
TempData["Message"] = "This is your user name" + un;
TempData["Message"] = "This is your user-id" + userid;
TempData["Message"] = "This is your user password" + yrpassword;
return View();
}
이 암호 재설정 컨트롤러 액션의 현재보기 페이지입니다 :
가@model MvcApplication1.Models.webpages_Membership
@{
ViewBag.Title = "Reset Password";
}
<hgroup class="title">
<h1>@ViewBag.Title.</h1>
</hgroup>
<section id="loginForm">
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Password Reset Form</legend>
<ol>
<li>
@Html.LabelFor(m => m.Password)
@Html.TextBoxFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</li>
</ol>
<input type="submit" value="Save" />
</fieldset>
<ol>
<li>
@Html.ActionLink("Login", "Login") You can now login to your account.
</li>
</ol>
}
</section>
업데이트 쿼리가 필요하다는 것을 알고 있지만 어떻게 든 얻을 수는 없습니다.
이것은 작동하지 않았다 : ( –