Asp.Net标识中基于角色的会话到期持续时间

时间:2015-08-04 12:09:41

标签: c# asp.net asp.net-mvc asp.net-identity owin

我的应用程序有3种类型的Asp.Net用户角色。目前,每个用户的Cookie过期时间为10天。我可以使用以下代码在Startup Class中设置它:



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




这里的问题是这个滑动到期时间适用于系统中的所有类型的用户。我无法弄清楚我们如何根据刚刚登录的用户的角色来设置cookie的过期时间。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:-1)

登录用户时,您可以检查用户的角色,根据他的角色,您可以指定滑动到期时间和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; }
    }