Asp.net mvc 我如何要求在控制器中设置特定的会话对象?

Asp.net mvc 我如何要求在控制器中设置特定的会话对象?,asp.net-mvc,Asp.net Mvc,是否有可以在控制器方法上设置的注释/属性,以使控制器操作需要在我的会话中设置特定的键 我正在寻找一种方法(而不是表单身份验证)来进行某种智能授权。您可以在自己的类中扩展actionfilteratAttribute,并重写OnActionExecuting方法。此方法将在进入操作之前被激发: public class RequireSessionSet : ActionFilterAttribute { public override void OnActionExecuting(Actin

是否有可以在控制器方法上设置的注释/属性,以使控制器操作需要在我的会话中设置特定的键


我正在寻找一种方法(而不是表单身份验证)来进行某种智能授权。

您可以在自己的类中扩展
actionfilteratAttribute
,并重写
OnActionExecuting
方法。此方法将在进入操作之前被激发:

public class RequireSessionSet : ActionFilterAttribute {
  public override void OnActionExecuting(ActinExecutingContext filterContext) {
    if (filterContext.HttpContext.Session["Foo"] == null) {
        // Redirect or do something.
    }
  }
}
然后可以对任何操作进行注释:

[RequireSessionSet]
public ActionResult Index() {
}
编辑: 您还可以获得fancier并允许在属性中设置属性:

public class RequireSessionSet : ActionFilterAttribute {
  public string SessionKey { get; set; }

  public override void OnActionExecuting(ActinExecutingContext filterContext) {
    if (string.IsNullOrWhiteSpace(SessionKey)) {
      SessionKey = "Default";

    if (filterContext.HttpContext.Session[SessionKey] == null) {
        // Redirect or do something.
    }
  }
}

[RequireSessionSet(SessionKey="SpecialKey")]
public ActionResult Index() {
}