2010-10-10 19 views
2

我在我的web.config以下授權設置:如何使ASP.NET MVC視圖通過不安全位置標籤Web.Config中

<authorization> 
     <deny users="?" /> 
</authorization> 

這否認對應用程序的所有匿名訪問接受登錄頁面。除此之外,我通過自定義授權屬性在每個控制器操作中使用授權。

除了登錄頁面之外,我還有一個額外的操作,我想公開公開。此特定操作不具有授權屬性。我試圖通過在web.config文件中像這樣利用位置標籤,使這個觀點(resetPassword視圖)市民:

<location path="Account/ResetPassword" allowOverride="false"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

在路徑屬性上面我已經嘗試了兩種觀點,以及操作路徑,但它不允許公衆訪問該行爲。

我甚至試圖把這個觀點在一個單獨的文件夾中的共享文件夾中,而把獨立的web.config文件,使該文件夾的公共像這樣:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <authorization> 
     <allow users="*" /> 
    </authorization> 
    </system.web> 
</configuration> 

無上述配置的容許我公開此特定行爲(視圖)。任何人都可以提出任何其他解決方案,或者我可能在這種情況下做錯了什麼? 在此先感謝。

+0

請參閱下面的帖子評論的實際答案。 – Nosh 2010-10-11 02:31:29

回答

3

您可以從Web配置中刪除授權標籤,並使用授權屬性。 沒有授權atttribute集的操作將公開。

前段時間我有同樣的問題。請看看到this question and its answers

如果你想使用web配置,然後使用如下代碼

<!-- Allow access to _assets directory --> 
<location path="_assets"> 
    <system.web> 
     <authorization> 
      <allow users="?"/> 
     </authorization> 
    </system.web> 
</location> 

在您的樣品您正在使用「*」,但你應該用做「?」 ;)

+0

我明白,但我假設這樣做是由Web.config在Web應用程序的整個內容上實現的第二級安全性。我想保留這一點。有沒有辦法可以做到這一點? – Nosh 2010-10-11 00:27:53

+0

@Nosh:我已根據您的要求編輯了我的答案。試試這個。 – Lorenzo 2010-10-11 00:35:11

+0

謝謝你的幫助,不幸的是,改變角色並不能解決我的問題。 – Nosh 2010-10-11 01:07:58

相關問題