2010-07-15 5 views
5

수동으로 인증 쿠키를 만들려면 Logon 메서드에서 FormsAuthenticationTicket을 설정하십시오. 해당 인증 쿠키의 유효성을 검사하고 Current.User 개체를 할당하려면 어떻게해야합니까? Global.asax 페이지에서 완료 되었습니까?Asp.Net MVC FormsAuthenticationTicket

로그온 코드 :

FormsAuthenticationTicket Authticket = new 
          FormsAuthenticationTicket(1, 
          model.UserName, 
          DateTime.Now, 
          DateTime.Now.AddYears(1), 
          true, 
          "", 
          FormsAuthentication.FormsCookiePath); 

       string hash = FormsAuthentication.Encrypt(Authticket); 

       HttpCookie Authcookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash); 

       if (Authticket.IsPersistent) Authcookie.Expires = Authticket.Expiration; 

       Response.Cookies.Add(Authcookie); 


       if (!String.IsNullOrEmpty(returnUrl)) 
       { 
        return Redirect(returnUrl); 
       } 

       return RedirectToAction("Index", "Home"); 

어떻게이 쿠키를 읽고 사용자를 확인합니까? 지금까지 Global.asax 파일에 내 코드 :

HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName]; 
     if (authCookie != null) 
     { 
      FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); 
      FormsIdentity id = new FormsIdentity(authTicket); 
      GenericPrincipal principal = new GenericPrincipal(id,null); 
      Context.User = principal; 
     } 

답변

3

나는 기본 컨트롤러에 코드의 유형을 움직였다. Controller 클래스에는 "OnAuthorization"이라는 메서드가 있으며이 메서드는 재정의 될 수 있습니다.

잠깐이지만 Global.asax의 OnAuthorization 메소드를 통해 진행되는 모든 요청 (이미지, CSS 등)을 믿습니다. 컨트롤러에 대한 권한을 아래로 밀어 컨트롤러/동작에 대한 요청 만 받고 있습니다.

+0

많은 문제를 해결해 주셔서 감사합니다. – ace