あなただけcreate a custom role providerする必要があります。これを行うには、System.Web.Security.RoleProvider
から継承し、特定のメンバーをオーバーライドするクラスを作成します。以下のコードはあなたを始めさせるはずです。すべてのthrow new NotImplementedException()
を関数の実装に置き換えます。たとえば、IsUserInRole
を指定すると、ユーザーに指定された役割があるかどうかをデータベースに照会するコードが提供されます。
using System.Web.Security;
namespace MyNamespace
{
public class MyRoleProvider : RoleProvider
{
public override void AddUsersToRoles(string[] usernames, string[] roleNames)
{
throw new NotImplementedException();
}
public override string ApplicationName
{
get; set;
}
public override void CreateRole(string roleName)
{
throw new NotImplementedException();
}
public override bool DeleteRole(string roleName, bool throwOnPopulatedRole)
{
throw new NotImplementedException();
}
public override string[] FindUsersInRole(string roleName, string usernameToMatch)
{
throw new NotImplementedException();
}
public override string[] GetAllRoles()
{
throw new NotImplementedException();
}
public override string[] GetRolesForUser(string username)
{
throw new NotImplementedException();
}
public override string[] GetUsersInRole(string roleName)
{
throw new NotImplementedException();
}
public override bool IsUserInRole(string username, string roleName)
{
throw new NotImplementedException();
}
public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames)
{
throw new NotImplementedException();
}
public override bool RoleExists(string roleName)
{
throw new NotImplementedException();
}
}
}
すべてを実装する必要はありません。たとえば、アプリケーションがロールを作成または削除しない場合は、CreateRole
またはDeleteRole
で何もする必要はありません。
はまた、それを利用するために知っているので、ASP.NETフレームワークを使用してロールプロバイダを登録する必要があります。 web.config
を以下のように更新してください。
<configuration>
<system.web>
<roleManager defaultProvider="MyRoleProvider" enabled="true">
<providers>
<add
name="MyRoleProvider"
type="MyNamespace.MyRoleProvider"
applicationName="MyApplicationName" />
</providers>
</roleManager>
</system.web>
</configuration>
がチェックするためにここに呼び出すために何[承認(のような... ..私はこれで始まり、私はどんな質問がある場合は、あなたが知っているよう – GiGi
あなたは私がこれをどのように呼ぶのですか教えてくださいすることができますありがとうございました役割)]となるように制限することになる、そしてあなたは、コントローラにアクションメソッドに '[オーソライズ(役割=「管理者」)]'のような何かを行うことができ、私が説明するように、あなたがロールマネージャを実装しましたと仮定すると、 – GiGi
@GiGi 「管理者」のユーザーだけがそのアクションメソッドにアクセスできます。 [ドキュメント](https://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v = 118).aspx)を参照してください。 – mason