Я написал следующий код, как показано ниже, чтобы обновить роли пользователей после того, как они подписались на мой веб-сайт, как показано ниже:
private void RefreshUserRoles()
{
var AuthenticationManager = HttpContext.GetOwinContext().Authentication;
var Identity = new ClaimsIdentity(User.Identity);
Identity.RemoveClaim(Identity.FindFirst(ClaimTypes.Role));
Identity.AddClaim(new Claim(ClaimTypes.Role, "Subscriber"));
AuthenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant(
new ClaimsPrincipal(Identity),
new AuthenticationProperties { IsPersistent = true}
);
}
Обратите внимание на эту строку кода:
AuthenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant(
new ClaimsPrincipal(Identity),
new AuthenticationProperties { IsPersistent = true}
);
После того, как пользователь вернется на мой сайт, я установил постоянный файл cookie, но забыл установить срок его действия. Я должен установить этот файл cookie на 30 минут, после чего пользователю будет предложено повторно войти в систему.
Поскольку некоторые пользователи никогда не заходят на веб-сайт повторно, у меня возникает проблема, теперь мне нужно сбросить файлы cookie всех пользователей в их браузерах, когда они заходят на веб-сайт, и изменить свою роль, если они отменили подписку. Я заметил, что некоторые пользователи отменили свою подписку и никогда не выходили в систему, но все же они все еще могут использовать функции на моем веб-сайте ...
Итак, мои вопросы:
Как установить срок действия cookie на 30 минут, после чего пользователю будет предложено повторно войти в систему.
Как настроить повторную проверку файлов cookie пользователей, если срок их действия не истек в течение длительного времени, чтобы я мог сбросить их файлы cookie на обычного пользователя, если они отменили подписку?