在ASP.NET MVC上使用ServiceStack身份验证滑动会话到期

时间:2015-09-18 13:19:12

标签: asp.net-mvc session servicestack

在ASP.NET MVC中使用ServiceStack身份验证时,我想实现一个滑动会话到期。在@mythz的帮助下,我得到了它的工作。对于任何想要这样做的人,请参阅我的最终实施答案。

1 个答案:

答案 0 :(得分:2)

这是我在ASP.NET MVC中使用ServiceStack身份验证时滑动会话的最终实现...

public class SlideSessionExpirationAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var ssController = filterContext.Controller as ServiceStackController;
        if (ssController == null) return;

        // Get session and re-save to slide/update the expiration date
        var session = ssController.ServiceStackRequest.GetSession();
        if(session != null && session.IsAuthenticated)
            ssController.ServiceStackRequest.SaveSession(session, AppHost.SessionExpiration);

        base.OnActionExecuting(filterContext);
    }
}

...其中AppHost.SessionExpiration是我在static readonly TimeSpan中声明的AppHost.cs。要使用它,你可以通过[SlideSessionExpiration]在控制器或方法上拍打属性,或者你可以通过FilterConfig.cs内的全局过滤器(就像我做的那样)通过...添加它...

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    /* ... other filters ... */
    filters.Add(new SlideSessionExpirationAttribute());
}