2013-07-15 30 views
0

我正在執行IPrincipal接口,並且role參數是String這一事實聽起來很奇怪。我想這有很好的理由,但我想知道爲什麼。爲什麼IPrincipal.IsInRole參數是一個字符串?

+0

既然你認爲這很奇怪,你必須記住一些其他類型,你必須認爲它更符合邏輯。小心分享它? –

+0

不僅僅是思考其他類型,它只是我試圖避免魔法字符串,如果我必須使用它,我想知道爲什麼。 –

回答

11

這是因爲roleprovider是身份驗證的可插入部分,因此您可以推出自己的(雙關語意圖)並提供用戶角色成員身份的結果。

如果您認爲基於角色的認證機制需要具有任意數量的命名角色,那麼如果這是基於某種類型或硬編碼的系統,那麼這將不那麼容易。所以使用一個字符串來匹配存儲在某種方式下的角色實際上是可行的。

P.S. asp.net成員資格和認證系統總體上是一團糟,並且即將在即將到來的MVC5和Asp.Net更新中使用owin模式進行重大升級。

+2

+1只是雙關語:D(也是一個很好的答案) – Mansfield

0

除了我的頭頂,確定跨API的角色(例如Windows或Novell)的實現方式有很大不同。然而,一個共同點是有組名,並且string是正確的類型。

請參閱引擎蓋下的IsInRole可以有許多不同的實現。其中一些查詢Active Directory。

相關問題