我在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是否合适?
提前致谢!
答案 0 :(得分: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
它没有明确回答你的问题,但它涵盖了有关过期的概念,讨论了滑动会话安全令牌。