Я хочу позволить администраторам быть зарегистрированными для дольше, чем обычные пользователи. Я не вижу рычаг для установки тайм-аута cookie программно или основанным на роли способом. Действительно ли это возможно в ASP с помощью Аутентификации Форм?
Да, вы могли бы это сделать. Вам нужно будет создать билет проверки подлинности вручную, вместо того, чтобы позволить платформе генерировать его автоматически.
Срок действия билета зависит от роли пользователя.
SNIPPET:
switch Role:
Case A: VARIABLE X = Y; BREAK;
CASE B: VARIABLE X = Y2; BREAK;
..
End switch
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1, // Ticket version
Username.Value, // Username associated with ticket
DateTime.Now, // Date/time issued
DateTime.Now.AddMinutes(VARIABLE X), // Date/time to expire
true, // "true" for a persistent user cookie
reader.GetString(0), // User-data, in this case the roles
FormsAuthentication.FormsCookiePath);// Path cookie valid for
// Encrypt the cookie using the machine key for secure transport
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie cookie = new HttpCookie(
FormsAuthentication.FormsCookieName, // Name of auth cookie
hash); // Hashed ticket
// Set the cookie's expiration time to the tickets expiration time
if (ticket.IsPersistent) cookie.Expires = ticket.Expiration;
Response.Cookies.Add(cookie);