我的网站的管理部分的URL始终始于Admin/
。是否有可能在ASP.NET MVC中通过使用这部分URL来限制对用户的访问?ASP.NET MVC:使用URL限制访问
显然我会保持[Authorize(Roles = "Administrator")]
适当的控制器和操作,但我不知道如果它可以只看URL而不是步入代码将更快的应用程序。
我的网站的管理部分的URL始终始于Admin/
。是否有可能在ASP.NET MVC中通过使用这部分URL来限制对用户的访问?ASP.NET MVC:使用URL限制访问
显然我会保持[Authorize(Roles = "Administrator")]
适当的控制器和操作,但我不知道如果它可以只看URL而不是步入代码将更快的应用程序。
在Steven Sanderson的书中找到了答案,Pro ASP.NET MVC Framework。
将下面的代码放到你的web.config文件中。
<location path ="Admin">
<system.web>
<authorization>
<deny users="?"/>
<allow roles="Administrator"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
这意味着匹配~/Admin/*
任何URL,应用程序将拒绝访问比那些角色“管理员”等未经验证的游客或 任何其他游客。
这将工作,但您然后将授权绑定到您当前的路由模型。授权操作的优点在于,它从您当前使用的url结构中抽象出了功能(实际上是您想要控制的功能)。
这也意味着你可以单元测试这个功能。
您可以创建一个BaseAdminController,其所有的管理控制器的扩展这个:
[Authorize(Roles = "Administrator")]
public class BaseAdminController : Controller {
}
现在,如果你通过URL想要的话,你做的已经是正确的,但如果你只是为自己节省作出确定它的一切,上面是方式。然后,测试可以确保Admin命名空间中的所有控制器扩展此控制器。
那么使用URL进行授权有什么好处吗? – ajbeaven 2009-09-03 20:34:51