2012-01-13 3 views
15

저는 ASP.NET MVC 3을 폼 인증과 함께 사용하고 있습니다 (파일 -> new로 얻은 수정 된 바닐라 계정 코드 기반). 왜 내 ASP.NET MVC 영구 인증 쿠키가 작동하지 않습니까?

당신이 로그인

, 나는 그래서이 영구 쿠키를 설정해야합니다

FormsAuthentication.SetAuthCookie(userName, true); 

와 함께 인증 쿠키를 설정하고있다. 하지만 브라우저를 닫고 다시 열면 사이트를 탐색 할 때 다시 로그인해야합니다! Chrome dev 도구를 사용하면 쿠키 (.ASPXAUTH)가 생성되고 브라우저를 닫을 때 삭제되지 않는 것을 볼 수 있습니다.

내 Web.config의 : 그 어떤 차이가 있는지

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogIn" timeout="10000"/> 
</authentication> 

내가 IIS에서, 로컬에서 테스트하고 있습니다.

+1

이 답변을 확인할 수 있습니다 : http://stackoverflow.com/questions/682788/making-user-login-persistant-with-asp-net-membership – alexl

+2

좋아,이 링크는 나를 위해 그것을 정렬하는 것 같았다 - 고집 SetAuthCookie를 사용하고 내 config를 조정하여 쿠키 이름을 web.confg에 명시 적으로 설정하면 모두 작동합니다. 기묘한! –

+0

@Matt Roberts - 이유는 모르겠지만 쿠키 이름을 설정하면 나를 위해 그것을 고쳤습니다. 당신은 그것이 쿠키가 도메인 특정되는 등 작동 것이라고 생각할거야 이것은 MVC 또는 .NET의 버그일까요? – Greg

답변

3

:이 답변을 확인하실 수 있습니다

: Making user login persistant with ASP .Net Membership

확인을,이 링크는 나를 위해 그것을 정렬 할 듯 - 명시 적으로 쿠키 이름을 설정 SetAuthCookie을 고수하고 내 설정을 조정 (web.confg에 있음) 모든 것이 현재 작동 중이다. 기묘한! -

8

인증 티켓을 사용하여 쿠키를 만드는 것이 좋습니다. SetAuthCookie 후드 아래에 인증 티켓을 만듭니다. 자신의 정식 티켓을 만들려고 했습니까? 그것 는 그것에 여분의 데이터를 저장할 수 있습니다. 이 도움이

// create encryption cookie   
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, 
     userName, 
     DateTime.Now, 
     DateTime.Now.AddDays(90), 
     createPersistentCookie, 
     string.Empty); 

// add cookie to response stream   
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);  
System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket); 
if (authTicket.IsPersistent) 
{  
     authCookie.Expires = authTicket.Expiration; 
} 
System.Web.HttpContext.Current.Response.Cookies.Add(authCookie); 

희망 :

다음은 예입니다. @alexl에서 코멘트에서 해결

+0

감사합니다. 그래서 SetAuthCookie를 전혀 사용하지 않아야합니까? MSDN 설명서에서이 쿠키를 사용하여 영구 쿠키를 만들 수 있다고 알려줍니다. 또한, 새로운 MVC 애플 리케이션을위한 바닐라 코드는 SetAuthCookie를 사용합니다 - 틀린가? –

+0

SetAuthCookie()는 전 세계적으로 동일한 작업을 수행하고 있습니다. 그것은 항상 이상하게 보일뿐입니다. 왜냐하면 그것이 항상 작동하지 않는 것 같기 때문입니다. myslef를 인증 티켓으로 생성하여 응답 스트림에 추가하는 것을 선호합니다. –

+0

귀하의 질문에 대한 의견으로 게시 된 링크 @alexl을 확인하십시오. –

관련 문제