Asp中基于角色的会话过期时间.净的身份

本文关键字:会话 过期 时间 身份 角色 于角色 Asp | 更新日期: 2023-09-27 18:06:29

我的应用程序有3种类型的Asp。净用户角色。目前每个用户都有10天的Cookie过期时间。我可以在启动类中使用以下代码设置:

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Home/Login"),
    ExpireTimeSpan = new TimeSpan(10, 1, 0, 0, 0),
    SlidingExpiration=true,
}

这里的问题是这个滑动过期时间适用于系统中的所有类型的用户。我不知道如何根据刚刚登录的用户的角色来设置cookie的过期时间。

任何帮助都将非常感激。

谢谢

Asp中基于角色的会话过期时间.净的身份

在登录用户时,您可以检查用户的角色,并根据他的角色可以分配滑动过期和ExpireTimeSpan的值。

只需创建如下函数来获取这些值,并在创建身份验证cookie时调用它。

public AuthInfoDTO GetAuthInfo(List<string> roles)
        {
            AuthInfoDTO obj = new AuthInfoDTO();
            if (roles.Any(x => x == "Admin"))
            {
                obj.SlidingExpiration = true;
                ExpireTimeSpan = new TimeSpan(10, 1, 0, 0, 0);
            }
            else
            {
                obj.SlidingExpiration = false;
                ExpireTimeSpan = new TimeSpan(0, 1, 0, 0, 0);
            }
            return obj;
        }

也创建一个DTO类,如下所示:

 public class AuthInfoDTO
    {
        public bool SlidingExpiration { get; set; }
        public TimeSpan ExpireTimeSpan { get; set; }
    }