mvc 3 session和authorizeAttribute

mas*_*idi 4 asp.net-mvc authorize-attribute asp.net-mvc-3

我的网站对所有人开放,但我有一个控制器,有一些方法,只有具有用户和密码的经理可以进入.我节省了布尔IsManagersession.
我想使用authorize属性阻止谁IsManager == false.

gdo*_*ica 8

首先定义一个ActionFilter:

public class TheFilter: ActionFilterAttribute
{
   public override void OnActionExecuting(ActionExecutingContext filterContext)
   {
        var session = filterContext.HttpContext.Session;
        if ((bool?)session["IsManager"] == true)
            return;

        //Redirect him to somewhere.
        var redirectTarget = new RouteValueDictionary
             {{"action", "{ActionName}"}, {"controller", "{ControllerName}"}};
        filterContext.Result = new RedirectToRouteResult(redirectTarget);
   }
}
Run Code Online (Sandbox Code Playgroud)

然后在受限制的Action(或控制器)上方使用它:

//[TheFilter]
public class ManagersController : Controller
{
    [TheFilter]
    public ActionResult Foo()
    {
        ...
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)