凡授权访问控制器的

问题描述:

我有我的控制器以下过滤器:凡授权访问控制器的

[Authorize(Roles="Admin")] 
public class AdminOnlyController : Controller 
{ 
    // stuff 
} 

我展示了一个几个人在这里工作我在做什么的,和一个巨大的辩论中出现了一些的声称授权不应该是财务主任的责任。根据Steven Sanderson撰写的Pro ASP.NET MVC框架书,我学会了这样做。

没有其他人能够建议如何应该完成,除了它是错的。

是吗?有没有更好的办法?

简单的答案是肯定的 - 那是最好的方法。控制者的行为是对应用程序的所有请求的终点。将授权放在那里是非常有意义的。

您可以将授权授予IIS,但在访问被控制为文件(.aspx等)时效果更好。现在我们有了一个MVC,你必须控制一个控制器内多个动作的访问。

有两种分配授权的方式。控制器类或ActionResult。相对于你如何做到这一点,我不太确定。

我没有真正看到论证的一方,你认为与管理谁有权调用它的控制器有关。通过在附近获得授权,您可以按照理论(我忘记了名称)'尽可能接近地将它声明到您使用它的位置。'

这可能取决于您的同事的背景。如果他们真的习惯使用类似XML的东西,那么我敢打赌他们提出了一些类型的配置文件 - 这似乎是由于更多的公司类型的编程而引发的。

另一方面,在其他地方(但在应用程序内)提取授权可能会有好处,因此可以轻松修改,以防止最终添加“PaidUser”。在这种情况下,你不必去每个控制器去更新它。不过,我认为你最终会陷入一种全部或全无的方式 - 无论是在控制器中,还是全部都在某个配置文件中。除非您创建了一个计划,即您的*授权可以被管理员授权覆盖,但当时除外,您可能很容易失去对谁进行管理的控制权,并最终进入“授权管理”类别。