我的網站的管理部分的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