2014-01-16 3 views
0

아래 코드를 사용하여 폼 인증 쿠키를 만들려고합니다. 영원한 로그인에 대해서는 정상적으로 작동하지만 브라우저 세션을 닫을 때 영구 쿠키가 만료되지 않고 브라우저에서 제거되지 않습니다. 그것은 여전히 ​​브라우저에 유지됩니다. 여기 FormsAuthentication non persistent MVC 4 응용 프로그램에서 쿠키가 만료되지 않습니다.

public static void SetAuthenticationCookie(string userName, Role role, 
bool isPersistent) 
{ 
string data = role.RoleName; 
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(userName,isPersistent); 
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); 
FormsAuthenticationTicket newticket = new FormsAuthenticationTicket(
ticket.Version, ticket.Name, ticket.IssueDate,ticket.Expiration, 
ticket.IsPersistent,data); 
    authCookie.Value = FormsAuthentication.Encrypt(newticket); 
    HttpContext.Current.Response.Cookies.Add(authCookie);    
} 

브라우저

Cookie Information

의 쿠키 정보의 스크린 샷 양식 인증 여기

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" cookieless="UseCookies" name=".OneClick" 
    protection="All" slidingExpiration="true" timeout="43200" /> 
</authentication> 

의 Web.config 항목입니다 내가 놓친 게 있나요 이리? 알려주세요

답변

0

이것이 올바른 해결책인지 잘 모르겠습니다. 하지만 쿠키 만료가 이전 datetime으로 설정된 경우에도 양식 인증 티켓 만료가 web.config에서 설정되어 영구 쿠키처럼 작동하는 것으로 나타났습니다. 그래서 쿠키와 티켓을 1 분 동안 만료 시키면 쿠키와 티켓이 만료되도록 쿠키와 티켓 만료로 1 분 설정을 시도했습니다.

브라우저 세션이 끝난 후 비 영구 쿠키가 만료 되더라도. 어떤 이유에서이 쿠키는 양식 인증 쿠키가 만료 될 때까지 유지됩니다.

여기 해결책이 있습니다.

public static void SetAuthenticationCookie(string userName, Role role, 
        bool isPersistent) 
{ 
    string data = role.RoleName; 
    HttpCookie authCookie = FormsAuthentication.GetAuthCookie(userName, 
    isPersistent);    

    if (!isPersistent) 
    { 
    authCookie.Expires = DateTime.Now.AddMinutes(30); 
    } 

FormsAuthenticationTicket ticket=FormsAuthentication.Decrypt(authCookie.Value);   
FormsAuthenticationTicket newticket= 
new FormsAuthenticationTicket(ticket.Version,ticket.Name, ticket.IssueDate, 
authCookie.Expires, ticket.IsPersistent, data);    
authCookie.Value = FormsAuthentication.Encrypt(newticket); 
HttpContext.Current.Response.Cookies.Add(authCookie);    
} 

제안이나 개선을 환영합니다.

감사합니다.

관련 문제