我遇到了会话即将到期的问题,
Session["UserId"] = userId;
但是身份验证 cookie 仍然存在,因此 [authorize] 属性仍然允许用户导航系统,直到系统尝试读取会话变量和错误。空异常
会话到期时如何使 auth cookie 消失有什么想法吗?由于我是 ASP.NET MVC 3 的新手,因此我当然会很感激任何见解。
我遇到了会话即将到期的问题,
Session["UserId"] = userId;
但是身份验证 cookie 仍然存在,因此 [authorize] 属性仍然允许用户导航系统,直到系统尝试读取会话变量和错误。空异常
会话到期时如何使 auth cookie 消失有什么想法吗?由于我是 ASP.NET MVC 3 的新手,因此我当然会很感激任何见解。
有很多方法可以做到这一点。这里只是一个想法。
public class ControllerBase : Controller
{
public ControllerBase()
: base()
{
this.VerifySession();
}
/// <summary>
/// Indicates whether the session must be active and contain a valid customer.
/// </summary>
protected virtual bool RequiresActiveSession
{
get { return true; }
}
public void VerifySession()
{
if (this.RequiresActiveSession && Session["UserId"] == null)
{
Response.Redirect(Url.Action("LoginPage"));
}
}
}
public class HomeController : ControllerBase
{
protected override bool RequiresActiveSession
{
get
{
return true;
}
}
public ActionResult Index()
{
return View();
}
}
基本上你有一个控制器库来处理验证会话。任何从它继承的控制器都可以指定是否要验证会话。
或者
您可以创建一个自定义操作过滤器,它允许您在执行控制器操作之前将您的控制器或操作归类并挂钩您的代码到处理管道中。