2016-06-24 12 views
0

MVCプロジェクトでは、ユーザがAspNetRolesテーブルとAspNetUsersテーブルにユーザとロールを追加することができます。アプリケーションは、Active Directoryを使用してログインビューでユーザーを認証します。私のデータベースでは、私のデータベースにAdministratorsの役割にユーザuser123を追加しました。私はこのリンクを私のログイン部分のAdministratorsロールに見えるようにするために以下のロジックを追加しました。データベースに格納されているASPNETユーザーとロールに対して、どのように認証しますか?

@if (Roles.IsUserInRole("Administrators")) 
{ 
    @Html.ActionLink("Manage Accounts", "Index", "Roles") 
} 

私はまた、データベースへのロールプロバイダ接続をインスタンス化する試みで、私のweb.configファイルにこれを追加しました。

<roleManager enabled="true"> 
    <providers> 
    <clear /> 
    <add connectionStringName="DefaultConnection" 
     name="AspNetSqlRoleProvider" 
     type="System.Web.Security.SqlRoleProvider" 
     applicationName="MyApplicationName" /> 
    </providers> 
</roleManager> 

しかし、私のリンクはまだ私のデータベースによるとAdministratorsのメンバーであるuser123には見えません。これの原因は何ですか?

答えて

1

Identity、ASP.NET Membership、およびWindows Authは同時に混在していますが、これらはすべて互いに本質的に互換性がありません。アイデンティティを使用している場合は、役割提供者などがウィンドウ外にあります。それはIdentityで置き換えられるASP.NET Membershipのすべての部分です。 Windows認証はまったく別の獣でもあり、IdentityまたはASP.NETメンバーシップによって提供される個々の認証では動作しません。

独自の認証システムを使用してAD経由で認証する場合は、Windows認証を使用できません。代わりに、手動でLDAP経由でADに接続し、それに対する許可を実行する必要があります。 Identityで提供されているシステムの実際のユーザーレコードはまだ必要ですが(誰もASP.NETメンバーシップを使用する必要がないため)、IDを使用して実際にユーザーとパスワードの組み合わせを確認することはありません。代わりに、LDAP経由でそれを行い、Identity側のユーザーにサインインするだけです。

+0

Chris、私はLDAPを通して認証しています。私はAD証明書を使って自分のアプリケーションにログインしています。ユーザー名とパスワードが有効かどうかを確認できます。私のログインパーシャルがIDを使用しています。私の役割提供者は間違っていると思います。しかし、これは私がこれのような何かを試みた最初のものであり、私はMVCにかなり新しいです。 – Skullomania

+0

IDがロールプロバイダを使用しないため、ロールプロバイダが間違って設定されていることを保証できます。 –

+0

ok ... webconfigから文字列を削除すると、データベースのロールを使用してアプリケーションを認証する方法を教えてください。 – Skullomania

関連する問題