首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据ASP.NET MVC 3中的控制器和操作名称授权当前用户

根据ASP.NET MVC 3中的控制器和操作名称授权当前用户
EN

Stack Overflow用户
提问于 2011-04-08 19:59:04
回答 2查看 5.1K关注 0票数 14

我需要在ASP.NET MVC3中创建自定义授权。在应用程序中,授权定义在5个表中:用户,组,用户组,权限,组权限。一个用户可以属于多个组,每个权限也可以分配到多个组。每个控制器操作都分配了一个RightID。

内置的授权无法适应这种设置,所以我尝试创建一个自定义的AuthorizeAttribute。当重写AuthorizeCore时,我意识到我没有访问控制器名称和操作名称的权限。

我能否以某种方式要求路由器解析AuthorizeCore内部的Request.RawUrl,以获取控制器和操作名称?或者有没有别的方法可以做我想做的事?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-08 20:04:05

代码语言:javascript
运行
复制
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
    var routeData = httpContext.Request.RequestContext.RouteData;
    var controller = routeData.GetRequiredString("controller");
    var action = routeData.GetRequiredString("action");
    ...
}
票数 23
EN

Stack Overflow用户

发布于 2011-04-08 20:02:32

您可以使用操作过滤器来实现这一点,您可以在其中访问所有HttpContex。

代码语言:javascript
运行
复制
public class MyAuthorizeAttribute : ActionFilterAttribute, IAuthorizationFilter
{

    #region Implementation of IAuthorizationFilter

    public void OnAuthorization(AuthorizationContext filterContext)
    {
              // ... implementation

              // filterContext.Controller is the controller
              // filterContext.RouteData is all the route data
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5594726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档