2009-10-27 153 views
1

我開始設計使用ASP.NET MVC預覽版2開發的Web應用程序的基礎結構作爲學習體驗。 我有我自己的域模型和數據庫架構,我希望用於身份驗證。Asp.net成員身份驗證

我想執行基於角色的身份驗證的變體。但是,我似乎無法圍繞如何做到這一點。

我有一個用戶可以訪問「博客」。我如何在用戶處於預期角色時執行授權,但用戶屬於上述「博客」的情況下執行授權

是否需要自定義角色提供程序,或者是否應該在授權屬性中執行邏輯控制器動作;查詢經過身份驗證的用戶的BlogId並在那裏執行授權邏輯。我不知道任何內置的方式來做到這一點,但如果有請糾正我。

如果可能的話,提供此功能的自定義角色提供者或授權屬性的示例將非常棒。

謝謝

回答

1

這聽起來像你是想是有兩個作用和所有權檢查的能力。例如,用戶可能具有「作者」角色,但也需要與特定博客建立所有權關係才能真正能夠創建或更新博客條目。使用標準角色提供者以及知道如何檢查所有權的自定義授權屬性 - 實質上是動作實體和DB中當前用戶條目之間的特定外鍵關係 - 似乎是一種合理的方法這個。

你可以在my answer這個similar question找到一些示例代碼。

+0

感謝您的快速回復。將使用授權屬性與輸出緩存衝突;我記得在某個地方讀過這篇文章。 – 2009-10-27 02:00:17

+0

請查看http://www.codeplex.com/aspnet上AuthorizeAttribute的源代碼,看看它們如何處理緩存問題。在我的代碼示例中,您可以看到我調用SetCachePolicy(),它實際上實現了代碼,以類似於AuthorizeAttribute本身的方式解決此問題。 – tvanfosson 2009-10-27 02:03:43

+0

這似乎正是我所需要的。謝謝。 – 2009-10-27 02:12:05