2011-04-14 71 views
0

我無法讓AuthorizeAttribute爲開箱即用的MVC 3應用程序工作。所以我創建了自己的屬性繼承自AuthorizeAttribute並覆蓋所有方法並添加斷點以查看發生了什麼。ASP.NET MVC 3 AuthorizeAttribute無法正常工作,甚至沒有被調用

但問題是,屬性代碼永遠不會被調用!任何想法可能導致這種情況?

它是一個帶有Index方法的帶有HomeController的完全空白的MVC 3應用程序。表單身份驗證設置爲重定向到〜/ Account/LogOn。但似乎它只是不加載[授權]屬性...

編輯:

對不起你們,我一定是真的累了今天:)它其實不是一個完全空白的項目。我有一些Ninject代碼爲我的HomeController提供了一個存儲庫。如果我禁用它並在HomeController上創建一個無參數的構造函數,那麼AuthorizeAttribute似乎可以正常工作。

任何想法爲什麼Ninject依賴注入會干擾授權屬性?

- 基督教

+2

你確定它是你的AuthorizeAttribute而不是那個動作/控制器,也許它是默認的嗎?嘗試用名稱空間作爲前綴。如果它不起作用,請提供一些更多的代碼供我們分析。 – tpeczek 2011-04-14 18:36:37

回答

1

你說你有你的web.config以下設置?

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/logOn" /> 
</authentication> 

你是如何使用你的授權屬性,我們可以看到一些代碼?

您可能想要一步一步瀏覽「Authenticating Users with Forms Authentication」指南。

0

創建自定義屬性並啓用表單身份驗證是不夠的。您仍然必須修飾要使用該屬性執行過濾器的控制器/操作。

[Authorize] 
public ActionResult Index() 
{ 
    // ...your code 
} 

[Authorize] 
public class HomeController 
{ 
    // ... your actions 
} 

編輯作爲tpeczek在評論中說,還要確保[授權]正在使用您的AuthorizeAttribute而不是System.Web.Mvc.AuthorizeAttribute。

相關問題