ASP.NETMVCアプリケーションでメンバーシッププロバイダーを使用しています。ユーザーが管理者かどうかを確認したい。
if (Membership.ValidateUser(model.UserName, model.Password))
{
....
}
ValidateUserはユーザー名とパスワードのみを取得します。別のフィールド(IsAdmin)を追加したいと思います。どうすればこのコードを書くことができますか?!
ASP.NETMVCアプリケーションでメンバーシッププロバイダーを使用しています。ユーザーが管理者かどうかを確認したい。
if (Membership.ValidateUser(model.UserName, model.Password))
{
....
}
ValidateUserはユーザー名とパスワードのみを取得します。別のフィールド(IsAdmin)を追加したいと思います。どうすればこのコードを書くことができますか?!
@jsalvyが私に思い出させたように、あなたはこれをすることができます:
bool isUserAdmin = IsUserInRole(userName, "Admin");
ユーザーがロールに含まれている場合はtrueを返し、IsUserInRole
そうでない場合はfalseを返します。string[] userRoles = Roles.GetRolesForUser(userName);
また、ユーザーが使用しているすべての役割を取得するために使用することもできます。また、[Authorize(Roles = "Admin")]
属性を使用して、管理者以外のユーザーへのアクセスを制限することもできます。
MembershipProviderは権限/役割を処理しないため、これはMembershipProviderではなくRoleProviderの実装で実行する必要があります。
http://msdn.microsoft.com/en-us/library/8fw7xh74.aspx は、RoleProvider基本クラスの概要です。ご覧のとおり、このようなものをチェックできる「IsUserInRole」のようなメソッドが含まれています。
これを実装する方法のより詳細なサンプルは次のとおりです:http://msdn.microsoft.com/en-us/library/317sza4k.aspx
それとは別に、特定のユーザーがメンバーであるかどうかをデータソースに対して直接チェックする、ある種のMembershipManagerクラスをいつでも作成できます。
編集:標準のsetup.NET Membership / Role / Profileモデルを使用して、RoleProviderの上にプロバイダーを実装する必要がないことを明確にしたいと思います。ユーザーの役割を設定している場合は、役割クラスを使用してそれらにアクセスできます。RolesクラスはRoleProviderに対するものであり、MembershipクラスはMembershipProviderに対するものです。
単にUser.IsInRole( "Administrators")です
http://msdn.microsoft.com/en-us/library/system.web.security.roleprincipal.isinrole.aspx