Как программно создать несколько файлов cookie для аутентификации для одного приложения - PullRequest
5 голосов
/ 22 марта 2012

Я пишу систему управления контентом, где пользователь может создавать несколько сайтов внутри приложения. Каждый сайт может иметь аутентификацию. Я пытаюсь выяснить, как создать несколько файлов cookie для аутентификации для приложения, не добавляя каждый из них в файл web.config. Мне нужно создавать их программно при запуске приложения. Возможно ли это?

Ex.

SecureApp: http://localhost/CTMS - требуется проверка подлинности для обновления сайтов

CustomSite: http://localhost/CTMS/Custom1 - Требуется аутентификация отдельно от SecureApp

Надеюсь, это имеет смысл.

1 Ответ

8 голосов
/ 22 марта 2012

Вы можете сделать это -

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

Затем вы можете написать код для проверки входящих запросов, чтобы увидеть, есть ли у них этот 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
}
...