目前我使用[授权(角色=“.....”),以确保我的ASP.NET MVC应用1我的控制器动作,这工作得很好。然而,某些搜索视图需要有按钮,需要根据搜索列表选择的记录,同时也记录在用户的安全PRIVS启用/禁用这些行动这条路。

因此我认为需要有一个类访问DB表交叉引用这些目标控制器/与应用程序角色动作来确定这些按钮的状态,这。这将很明显,让事情变得凌乱PRIVS将需要在2个地方要保持 - 在类/数据库表,并在控制器的动作(加,如果我想改变访问的行动,我将不得不改变代码和编译,而不仅仅是改变一个DB表项)。

理想我想延长[授权]功能,以便代替具有在[授权]代码来指定角色,它将查询基于所述用户,控制器和动作上的安全类,然后将返回一个布尔允许或拒绝访问。是否有任何这好文章 - 我无法想象这是想要做一个不寻常的事情,但我似乎在努力寻找如何做任何事情(可能是周一上午大脑)。我已经开始了一些代码,这样一来,在看文章的 http://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/ ,它似乎是出发确定,但我无法找到“正确”的方式,从HttpContext的获得呼叫控制器和行动的价值观 - 我可能捏造一些代码从请求URL中提取它们,但似乎并没有我的权利,我会而做正确。

干杯

MH

有帮助吗?

解决方案

我发现这在另一个论坛,因此将它张贴在这里的情况下,任何人发现它是有用的。请注意,您是如何做到这一点取决于您是否使用MVC 1或2更改

您需要创建的类来实现。

public void OnAuthorization(AuthorizationContext filterContext)

和然后可以使用

string controllerName = filterContext.RouteData.Values["controller"].ToString();

和是相同的,代以“行动”,“控制器”(确保在这些值检查第一空值)。在MVC 2这是可以改变到filterContext.ActionDescriptor.ActionName和.ActionDescriptor.ControllerDescriptor.ControllerName,你会不会有检查空

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top