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的过期时间。
任何帮助都将非常感激。
谢谢
在登录用户时,您可以检查用户的角色,并根据他的角色可以分配滑动过期和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; }
}