Установка подлинной продолжительности тайм-аута cookie на основе роли в ASP.NET

Я хочу позволить администраторам быть зарегистрированными для дольше, чем обычные пользователи. Я не вижу рычаг для установки тайм-аута cookie программно или основанным на роли способом. Действительно ли это возможно в ASP с помощью Аутентификации Форм?

9
задан Adrian Toman 5 June 2012 в 18:02
поделиться

2 ответа

Да, вы могли бы это сделать. Вам нужно будет создать билет проверки подлинности вручную, вместо того, чтобы позволить платформе генерировать его автоматически.

Срок действия билета зависит от роли пользователя.

В этом руководстве показано, как создать билет вручную.

8
ответ дан 4 December 2019 в 13:45
поделиться

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);
7
ответ дан 4 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: