ASP.NET MVC의 양식 인증에 대해 머리를 감싸려고합니다. 문제가 발생한 경우 MVC 5 내 구체적인 경우.AuthorizeAttribute가/Account/Login으로 리디렉션을 계속합니다.
내 응용 프로그램은 암호를 사용하지 않고 전자 메일 주소를 사용자 이름으로 사용합니다.
Login
메서드를 디버깅 할 때 해당 모델이 유효하고 내 (사용자 지정) MembershipProvider
이 예상대로 사용자의 유효성을 확인할 수 있습니다.
그런 다음 제공되는 returnUrl
으로 리디렉션됩니다 (테스트 목적 상,/Home/About에 AuthorizeAttribute
이 있음).
슬프게도 나는 Login
뷰로 즉시 돌아가므로 전체 프로세스의 기본 요소가 빠져 있다는 것은 명백합니다. (확장, 전체 인증/인증 프로세스에 대한 기본적인 통찰력, 나는 거의 그것으로 놀지 않는다).
로그인 메소드 :
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if(ModelState.IsValid && Membership.ValidateUser(model.Email, ""))
{
FormsAuthentication.SetAuthCookie(model.Email, model.RememberMe);
if (Url.IsLocalUrl(returnUrl))
{
return RedirectToLocal(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "Email address unknown");
}
return View(model);
}
LoginViewModel :
public class LoginViewModel
{
[Required]
[Display(Name = "Email")]
[EmailAddress]
public string Email { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
의 Web.config의 관련 부분 :
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
</system.web>
내가 무엇을보고 있지 않다? 어디서 볼 수 있니?
내가 전문가는을 (전혀)는 아니지만, 당신의 코드를 단계별로 할 때, 뷰 모델이 유효하게 않습니다 –
일을? 그 외에는 authorize 특성 대신 IsAuthorised를 사용합니다. – jbutler483
@ jbutler483 예, 그렇지 않은 경우 리디렉션이 없습니다. –