2

我在 ASP.NET MVC 3 应用程序中使用 Azure 的访问控制服务。我可以成功登录,阅读我需要的所有索赔数据等。一切正常,除了一件事。一段时间后(不到一个小时),身份验证 cookie 似乎过期了(至少它们不再出现在请求的 cookie 集合中)。

我仍在使用开发仿真,没有 SSL(身份验证服务本身除外)。

我正在使用以下操作过滤器来限制对某些控制器的访问:

public class PersonLoginFilter : ActionFilterAttribute, IActionFilter
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);

        // Check whether the user is logged in
        if (filterContext.HttpContext.Request.IsAuthenticated)
        {
             // ...
        }
    }
}

如何增加过期时间?或者在我的操作过滤器中手动更新 cookie 是否合适?

提前致谢!

4

1 回答 1

2

ACS 生成的令牌也有一个过期时间(您可以在管理门户中设置,最长约为 24 小时),但您也可以在 web.config 中设置一个值

<securityTokenHandlers> 
<add type="Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler..."> 
<sessionTokenRequirement lifetime="0:02" /> 
</add> 
</securityTokenHandlers>

ASP.NET 取两者中的最小值。

有关更多信息,我建议您发布此博客文章:http: //blogs.msdn.com/b/vbertocci/archive/2010/06/16/warning-sliding-sessions-are-closer-than-they-appear.aspx

它没有明确回答您的问题,但在讨论滑动会话安全令牌时涵盖了有关到期的概念。

于 2012-01-08T23:50:51.290 回答