asp.net-mvc - mvc 3 session 和授权属性

标签 asp.net-mvc asp.net-mvc-3 authorize-attribute

我的网站对所有人开放,但我有一个 Controller ,其中包含一些只有拥有用户名和密码的管理员才能进入的方法。我正在保存 bool 值 IsManagersession .
我想使用授权属性来阻止任何人 IsManager == false .

最佳答案

首先定义一个 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);
   }
}

然后在受限操作(或 Controller )上方使用它:
//[TheFilter]
public class ManagersController : Controller
{
    [TheFilter]
    public ActionResult Foo()
    {
        ...
        return View();
    }
}

关于asp.net-mvc - mvc 3 session 和授权属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9809703/

相关文章:

c# - 指定单个方法作为多个 Controller URL 的目标

c# - 如何通过 Entity Framework 代码优先使用现有的存储过程和函数

c# - 我们可以排除 ADO.Net 实体数据模型中 ToList() 方法中的特定记录吗?

c# - 将列表中的数据绑定(bind)到网格控件

asp.net-mvc - 用户不担任角色时的ASP.NET登录重定向循环

.net - 是否有一个等效于 .net 的标准 Web 表单(不是 MVC)的 authorizeattribute

asp.net-mvc - 具有自定义身份验证的自定义AuthorizeAttribute

javascript - 在mvc中使用jquery自动完成文本框

asp.net-mvc-3 - 自定义正则表达式属性缺少用于客户端验证的 data-val-regex-pattern

asp.net-mvc-3 - 跨2个服务层共享方法