2011-07-20 13 views
2

我正在從一個集成的/ Windows認證系統(我在web.config的授權部分使用windows組,並使用web.sitemap以及使用user.identity.name來實現各種各樣的用戶功能)到一個SSO解決方案通過http頭提供認證詳細信息。定製授權 - 完成角色,用戶呢?

我創建了一個非常簡單的自定義RoleProvider(覆蓋IsUserInRole和GetRolesForUser),它非常適合web.config的'allow roles'部分和web.sitemap的roles部分。

我想爲授權中的'用戶'部分做同樣的事情。我該如何去做這件事?它是否通過覆蓋不同的提供者?它是否也會影響user.identity.name返回的內容?

感謝您指出我在正確的方向:)

編輯 - 周杰倫。

請注意,這可能是一個hacky和沒有經驗的修復程序,但它適合我的目的。以下http://msdn.microsoft.com/en-us/library/8fw7xh74(v=vs.100).aspx您可以創建一個具有所有必需的函數定義的類,根據需要返回假/空字符串數組。

我實現的唯一功能是IsUserInRole和GetRolesForUser。後者簡單地掛鉤到Request.ServerVariables中以檢查適當的HTTP頭,並根據需要將它們格式化爲一個String數組。 IsUserInRole簡單地將提供的字符串與GetRolesForUser返回的字符串數組進行匹配。

在那之後,我只是引用上述在web.config

<roleManager defaultProvider="myroleprov" enabled="true"> 
<providers> 
    <clear/> 
    <add name="myroleprov" type="myApp.CustomProviders.myroleprov" applicationName="myApp"/> 
</providers> 
</roleManager> 

我認爲這是什麼呢?希望能幫助到你。

+0

你可以分享你的,你怎麼Implemeted一個自定義RoleProvider代碼? – Jay

+1

沒問題,請參閱編輯。 –

+0

添加角色提供程序名稱部分中的連接字符串缺少非常相似的歡呼,似乎不可見在您的可能只有MVC4? – Jay

回答

0
+0

我有一個快速的看看,因爲它似乎有點反映了角色提供者 - 但我不確定我需要覆蓋哪些方法(大多數我會忽略)。我在實現iprincipal和iidentity方面取得了一些成功 - 在global.asax Application_AuthenticateRequest例程中使用它們。這個固定的user.identity.name但似乎沒有與web.config/sitemap一起工作...所以我會回到會員供應商,謝謝! –

+0

我已經實現了可以創建membershipprovider的getUser函數,並使用getUser()返回一個membershipuser與適當的用戶名 - 但是這對我的web.sitemap的用戶訪問規則沒有影響。有任何想法嗎? –