2009-09-02 88 views
3

我的網站的管理部分的URL始終始於Admin/。是否有可能在ASP.NET MVC中通過使用這部分URL來限制對用戶的訪問?ASP.NET MVC:使用URL限制訪問

顯然我會保持[Authorize(Roles = "Administrator")]適當的控制器和操作,但我不知道如果它可以只看URL而不是步入代碼將更快的應用程序。

回答

2

在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,應用程序將拒絕訪問比那些角色「管理員」等未經驗證的遊客或 任何其他遊客。

1

這將工作,但您然後將授權綁定到您當前的路由模型。授權操作的優點在於,它從您當前使用的url結構中抽象出了功能(實際上是您想要控制的功能)。

這也意味着你可以單元測試這個功能。

+0

那麼使用URL進行授權有什麼好處嗎? – ajbeaven 2009-09-03 20:34:51

1

您可以創建一個BaseAdminController,其所有的管理控制器的擴展這個:

[Authorize(Roles = "Administrator")] 
public class BaseAdminController : Controller { 
} 

現在,如果你通過URL想要的話,你做的已經是正確的,但如果你只是爲自己節省作出確定它的一切,上面是方式。然後,測試可以確保Admin命名空間中的所有控制器擴展此控制器。