0

デフォルトから継承するクラスでAuthorization呼び出されるプロジェクトがありますCodeFirstRoleProviderRoleProvider

public class CodeFirstRoleProvider : RoleProvider
{
    public override void CreateRole(string roleName)
        {
            if(string.IsNullOrEmpty(roleName)) return;
            using(var context = new SISContext())
            {
                var role = context.Roles.SingleOrDefault(rl => rl.RoleName == roleName);//Roles table exists in database 
                if(role == null)
                {
                    var newRole = new Role
                                      {
                                          RoleId = Guid.NewGuid(),
                                          RoleName = roleName
                                      };
                    context.Roles.Add(newRole);
                    context.SaveChanges();
                }
            }
        }
}

私の他のプロジェクトWebPortalでは、上記の方法を次のように使用したいと考えています

var _role = new CodeFirstRoleProvider();
            _role.CreateRole("Admin");
            _role.CreateRole("NonAdmin");

このコードを my のどこに配置する必要がありますwebportalか? アプリケーションの実行時にこれらのロールが初めてデータベースに追加されるようにします。

このプログラムが初めて実行され、誰かが登録ボタンをクリックしたとします。上記の役割を持つドロップダウンリストが必要です。したがって、これらの役割は、登録をクリックする前にデータベースに存在する必要があります。

ロールがデータベースに入ると、将来これらの値にアクセスすることを心配する必要はありません。1 つの方法は、データベースに値を手動で書き込むことですが、使用できるこの関数があるため、そうしたくありません。

4

2 に答える 2

0

SimpleMembership データベースのシードに関するこの記事をご覧ください。SimpleRoleProvider を使用していない場合でも、コード ファーストを使用しているため、同じプリンシパルが適用されます。

于 2013-06-12T15:23:11.247 に答える