私は ASP.NET MVC 4 を使用して Web アプリケーションを開発しており、次のようなカスタム MembershipProvider と RoleProvider をいくつか作成しています。
# Custom MembershipProviders
<membership defaultProvider="myMembershipProvider">
<providers>
<clear />
<add name="myMembershipProvider" type="WebApp1.Business.Auth.MyMembershipProvider" />
<add name="adminMembershipProvider" type="WebApp1.Business.Auth.AdminMembershipProvider" />
</providers>
</membership>
# Custom RoleProviders
<roleManager enabled="true" defaultProvider="MyRoleProvider">
<providers>
<clear />
<add name="MyRoleProvider" type="WebApp1.Business.Auth.MyRoleProvider" />
<add name="AdminRoleProvider" type="WebApp1.Business.Auth.AdminRoleProvider" />
</providers>
</roleManager>
私の意図は、「myMembershipProvider」と「MyRoleProvider」を使用する Logon というカスタム AuthorizeAttribute を作成することです。「adminMembershipProvider」と「AdminRoleProvider」を使用する AdminLogon という名前の別のものを作成します。
2 つのカスタム AuthorizeAttributes を作成する理由は、各ロールの権限を取得するいくつかのメソッドを分離したいからです。
問題は、カスタム AuthorizeAttribute の両方でデフォルトの MembershipProvider と RoleProvider を動的に設定するにはどうすればよいかということです。
例えば:
// Set the default MembershipProvider as adminMembershipProvider
// Set the default RoleProvidersas as AdminRoleProvider
[AdminLogon(Roles = "Administrador")]
public ActionResult Funcionarios()
{
return View();
}
// Set the default MembershipProvider as myMembershipProvider
// Set the default RoleProvidersas as MyRoleProvider
[Logon(Roles = "Administrador")]
public ActionResult Funcionarios()
{
return View();
}