2015-08-13 173 views
1

我是新來的stackoverflow,所以請忍受我。我沒有找到直接回答我的問題。IIS授權MVC控制器完整URL

我正在使用由第三方開發的MVC Web應用程序。有一個特定的控制器,我想確保將某個項目查看給某些用戶。因此,例如,用戶可能訪問的URL爲: ... /#/ MyViews/1

通常,對於所有(Windows)身份驗證用戶來說,查看所有MyViews項目都可以。但是,我可能會只有一兩個用戶/組可以查看。第三方可能會在將來支持該功能,但他們現在還沒有。 我希望IIS授權可以通過改變web.config來幫助我,但我無法讓它工作。

我想我或許可以這樣做:

<location path="#/MyViews/234"> 
    <allow users="domain\username" /> 
</location> 

,但它似乎並沒有工作。這可能只是我無法做到的,但我討厭不得不等待第三方提供這些功能。

我誤解了「位置」功能的能力嗎?

解決此問題的其他可能選項?

+0

您可以在用戶想要訪問的操作上自定義授權屬性。像這樣:http://stackoverflow.com/a/10069844/1081079 – freshbm

+0

感謝您的評論,但我沒有修改/擴展的源代碼,這是第三方應用程序。 – ehjkrulz

回答

0

web.configlocation設置專門用於基於文件的身份驗證。您放置的值對應於Web服務器上的物理目錄和文件,而不是URL。

MVC不提供文件,它以編程方式爲控制器操作方法提供資源。因此,Web服務器(通過web.config)無法覆蓋其安全性。 AuthorizeAttribute是確保MVC應用程序安全的唯一方法,因爲它涉及鎖定資源(控制器操作)而不是通過URL進行保護,如果存在可訪問相同控制器操作的備用路徑,則該操作將失敗。

如果您沒有源代碼並且無法插入自己的代碼,那麼您唯一的選擇是希望第三方在軟件中添加一些選項以將安全性配置爲您的級別需要,這可能會涉及一個自定義的AuthorizeAttribute子類,它具有一些可以在配置文件或通過控制面板進行配置的設置。

+0

謝謝。這是我在測試期間開始懷疑的。我想我仍然希望在將URL傳遞給應用程序之前有辦法做到這一點。 我可以在技術上修改視圖模型並注入一些JavaScript來執行URL授權檢查,這是我可能會嘗試下一步。 – ehjkrulz