2009-08-01 6 views
1

Windows認証を使用しており、カスタムメンバーシップを持っていません。しかし、私はカスタムロールプロバイダを持っていて、それをオンにしました。しかし、web.config内の< authorization />要素はどうですか?私もそれで何かをする必要がありますか?Roles.GetRolesForUserとRoles.Provider.GetRolesForUserの違いは?

現時点では、Roles.GetRolesForUser( "")メソッドを使用できません(何も返しません)が、Roles.Provider.GetRolesForUser( "")のようにする必要がありますか?

最大の問題は、Roles.IsUserInRoleメソッドに入っていないため、サイトマップにあります。現時点では、私はこれにカスタムxmlsitemapproviderを使用していますが、きれいではありません。

web.configのサイトマップに対して、rolemanagerを有効にし、securitytrimmingenabledをtrueに設定しました。

+0

これを解決しましたか? – zsharp

+0

これは、IPrincipalの実装が初期化されたHttpModuleのライフサイクルの障害によるものです。ライフサイクルの初期に初期化を行った後、それは私のためにうまくいきました。 –

答えて

1

はい、あなたは、web.configファイルでカスタムロールプロバイダを設定する必要がある - このような何か:

<roleManager enabled="true" defaultProvider="SqlRoleManager"> 
    <providers> 
    <add name="SqlRoleManager" 
     type="System.Web.Security.SqlRoleProvider" 
     connectionStringName="SqlRoleManagerConnection" 
     applicationName="MyApplication" /> 
    </providers> 
</roleManager> 

をあなたは、あまりにも、trueにsecurity trimmingを設定する必要があります。例えば。

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true"> 
    <providers> 
     <add name="XmlSiteMapProvider" 
     description="Default SiteMap provider." 
     type="System.Web.XmlSiteMapProvider " 
     siteMapFile="Web.sitemap" 
     securityTrimmingEnabled="true" /> 
    </providers> 
    </siteMap> 
+0

私は自分の質問で、これらをweb.configにすべて設定したと説明しました。明らかにそれは明確ではなかったので、質問を編集して入れました。申し訳ありませんが、この時点でのこの回答は私を助けません。 –

関連する問題