SQL Server dBに接続されたデフォルトのMembershipProvider、ProfileProvider、およびRoleProviderを使用してMVC3イントラネットアプリケーションを構築しています。フォーム認証を使用する場合、ロールプロバイダーは正しく入力されます。Windows認証に切り替えると、役割プロバイダーにデータが入力されなくなります。これは、コードにブレークポイントを設定し、「Roles.GetRolesForUser()」を確認することでテストされます。私が起こっているのは、データベースに渡されているユーザーIDが「DOMAIN \ USERID」(これはUser.Identity.Nameにあるもの)であるのに対し、データベースにあるのは単なるユーザーIDであるということです。
すべてがデフォルトであるため、投稿するコードはあまりありません。
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
<membership defaultProvider="AspNetSqlMembershipProvider">
<providers>
<clear />
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear />
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
</providers>
<properties></properties>
</profile>
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider" cacheRolesInCookie="true">
<providers>
<clear />
<add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
<add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
私の最初の考えは、IDがメンバーシッププロバイダーに渡される前にドメインを削除することはできますが、User.Identity.Nameはgetのみです。
データベース全体を変更して、useridだけでなくdomain \ useridを使用することなく、これを修正するための最良の方法は何でしょうか。これは、カスタムメンバーシップ/プロファイル/ロールプロバイダーを作成せずに実行できますか?