2012-03-21 2 views
5

사용자가 앱 내에 여러 사이트를 만들 수있는 콘텐츠 관리 시스템을 작성 중입니다. 각 사이트는 인증을 가질 수 있습니다. 나는 web.config에 각각 하나씩 추가하지 않고도 여러 인증 쿠키를 갖는 방법을 알아 내려하고있다. 응용 프로그램이 시작될 때 프로그래밍 방식으로 생성해야합니다. 이것이 가능한가?하나의 앱에 여러 인증 쿠키를 프로그래밍 방식으로 사용하는 방법

Ex.

SecureApp :

SecureApp

에서 별도의 인증을 필요로 희망이 말이 - : - http://localhost/CTMS/Custom1 http://localhost/CTMS는 사이트

CustomSite를 업데이트 인증이 필요합니다.

답변

8

당신은이 작업을 수행 할 수 있습니다 -

FormsAuthenticationTicket _ticket = new FormsAuthenticationTicket(_version, _name, _issueDate, _expirationDate, _isPersistent, _userData, _cookiePath); 

string _encryptedTicket = FormsAuthentication.Encrypt(_ticket); 

HttpCookie _cookie = new HttpCookie("customticket", _encryptedTicket); 

HttpContext.Current.Response.Cookies.Add(_cookie); 

그런 다음 당신은 그들이이 쿠키가 있는지 확인하기 위해 들어오는 요청을 확인하는 코드를 작성할 수 있습니다 - 질문을 작성 후

HttpCookie _cookie = HttpContext.Current.Request.Cookies["customticket"]; 

if(_cookie){ 

_encryptedTicket = _cookie.Value; 
FormsAuthenticationTicket _ticket = FormsAuthentication.Decrypt(_encryptedTicket); 

    if(!_ticket.Expired) { 
     IIdentity _identity = new FormsIdentity(_ticket); 
     IPrincipal _principal = new GenericPrincipal(_identity, new string[0]); //Identity plus string of roles. 
    } 
} 
else{ 
//dostuff 
} 
+0

을, 이것은 내가 종료 된 접근 방식이다 올라가고있어. 감사! –

+0

우수한 솔루션입니다. MVC 5 애플리케이션 중 하나에서 이것을 채택했습니다. – Tommassiov

관련 문제