2012-03-21 13 views
5

Piszę system zarządzania treścią, w którym użytkownik może tworzyć wiele witryn w aplikacji. Każda witryna może mieć uwierzytelnienie. Próbuję dowiedzieć się, jak mieć wiele plików cookie uwierzytelniania dla aplikacji bez konieczności dodawania każdego do web.config. Muszę je utworzyć programowo, gdy uruchomi się aplikacja. czy to możliwe?Sposób automatycznego wielokrotnego uwierzytelniania plików cookie dla pojedynczej aplikacji

Przykł.

SecureApp: http://localhost/CTMS - wymaga uwierzytelnienia do aktualizacji witryn

CustomSite: http://localhost/CTMS/Custom1 - wymaga uwierzytelnienia odrębną od SecureApp

Mam nadzieję, że to ma sens.

Odpowiedz

8

Można to zrobić -

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); 

Następnie można napisać kod, aby sprawdzić przychodzące żądania, aby zobaczyć, czy mają tego 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

Po napisaniu pytanie, jest to podejście skończyło iść z. Dzięki! –

+0

Doskonałe rozwiązanie. Zaadoptowałem to w jednej z naszych aplikacji MVC 5. – Tommassiov

Powiązane problemy