0

다음은 나의 코드 예제입니다.폼 인증 보안

이것은 사용자에게만 공개하고 싶은 페이지입니다. 그것은하지 중요한 정보가 저장되어있어하지만 난 그게 싶습니다

[HttpPost] 
public ActionResult Login(LoginViewModel model) 
{ 
    if (!ModelState.IsValid) 
     return View(model); 

    var exs = _service.ValidateUser(model.EmailAddress, model.Password); 
    if (exs.Any()) 
    { 
     AddModelExceptionsToModelState(ModelState, exs); 
     return View(model); 
    } 

    FormsAuthentication.SetAuthCookie(model.EmailAddress,model.RemeberMe); 
    return RedirectToAction("Profile"); 
} 

내가 뭐하는 거지의 보안 확실하지 않다 :

[Authorize] 
public ActionResult Profile() 
{ 
    HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; 
    FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); 
    var users = _service.Get().Where(x => x.EmailAddress.ToLower() == ticket.Name); 
    var user = users.First(); 
    return View(user); 
} 

이것은 내 사용자가 로그인하는 방법이다 안전한.

위의 로그인/승인 방법은 안전하고 사용하기에 안전합니까?

그렇다면 로그인 한 사용자를 반환하는 방법을 어떻게 만들 수 있습니까? 추상 컨트롤러 클래스에서이 작업을 수행 한 후이 작업을 수행하는 것이 가장 좋습니다.

사용자의 로그인 및 로그 아웃을 처리하는 더 좋은 방법이 있습니까?

저는 Entity Framework 및 MVC5를 사용하고 있습니다. 참고 나는이 프로젝트 내에서 허용되지 않기 때문에 회원 데이터베이스를 사용할 수 없다.

+0

mvc5에서 제공되는 새로운 유형의 멤버십을 사용하십시오. 구체적인 유형을 사용하지 말고 직접 인터페이스를 구현하십시오. 오픈 소스이므로 표준 회원 활동을 수행하는 방법에 대한 단서를 얻을 수 있습니다. – DrinkBird

+0

올바른 방향으로 나를 가리킬 수 있습니까? – LmC

+0

정말 codereview.stackexchange.com에 속해 있습니다. –

답변

1

OWIN 인증 asp.net의 mvc5

개념과이 시스템에 의해 사용되는 인터페이스/클래스를 설명 스콧 알렌에 의해 훌륭한 블로그 게시물이 있습니다 내에서 인증의 새로운 구현입니다. 당신이 인 Pluralsight 계정 확인이있는 경우

http://odetocode.com/blogs/scott/archive/2013/11/25/asp-net-core-identity.aspx

이 과정이 너무

http://pluralsight.com/training/courses/TableOfContents?courseName=aspdotnet-mvc5-fundamentals

당신이 어떤 질문이 있으면 알려주세요 :)

1

귀하의 접근 방식은 괜찮습니다. 당신은 그러나, 쿠키를 사용하여 컨트롤러를 단순화 할 수 있습니다 : 폼 인증 모듈은 원래 접근 방식의 처음 두 행에서와 거의 같은 일을하지만 모듈이하는 주체를 설정하기 때문에

[Authorize] 
public ActionResult Profile() 
{ 
    string userName = this.User.Identity.Name; 
    var users = _service.Get().Where(x => x.EmailAddress.ToLower() == userName); 
    var user = users.First(); 
    return View(user); 
} 

입니다 평생을 요청하십시오. 그리고 위의 방법대로 교장에게 액세스 할 수 있습니다.