簡體   English   中英

如何在ASP.Net身份中創建角色和用戶?

[英]How to create Role and User in ASP.Net identity?

我的Web應用程序啟動時(在Global.asax.cs中的Application_Start()中),我使用以下方法創建了兩個角色和兩個用戶。 但是,正在創建管理員角色,而不是用戶角色。 名為Admin@admin.com的用戶和名為user@user.net的用戶也會發生類似的情況。 正在創建第一個,但不創建第二個。

這是我的代碼。

void create() {
    ApplicationDbContext context = new ApplicationDbContext();
    IdentityResult IdRoleResult;
    IdentityResult IdUserResult;

    var roleStore = new RoleStore<IdentityRole>(context);
    var roleMngr = new RoleManager<IdentityRole>(roleStore);
    if (!roleMngr.RoleExists("Administrator"))
        IdRoleResult = roleMngr.Create(new IdentityRole("Administrator"));

    roleStore = new RoleStore<IdentityRole>(context);
    roleMngr = new RoleManager<IdentityRole>(roleStore);
    if (!roleMngr.RoleExists("User"))
        IdRoleResult = roleMngr.Create(new IdentityRole("User"));

    var userMngr = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
    var appUser = new ApplicationUser() { UserName = "Admin@admin.com" };
    IdUserResult = userMngr.Create(appUser, "pa$$word");
    if (IdUserResult.Succeeded) 
        IdRoleResult = userMngr.AddToRole(appUser.Id, "Administrator");

    userMngr = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
    appUser = new ApplicationUser() { UserName = "user@user.net" };
    IdUserResult = userMngr.Create(appUser, "user");
    if (IdUserResult.Succeeded)
        IdRoleResult = userMngr.AddToRole(appUser.Id, "User");
}

誰能告訴我,我做錯了什么或執行此操作的任何其他方法。 提前致謝。

更新的代碼:

void createAdmin() {
    ApplicationDbContext context = new ApplicationDbContext();
    IdentityResult IdRoleResult;
    IdentityResult IdUserResult;

    var roleStore = new RoleStore<IdentityRole>(context);
    var roleMngr = new RoleManager<IdentityRole>(roleStore);

    if (!roleMngr.RoleExists("Administrator")) {
        IdRoleResult = roleMngr.Create(new IdentityRole("Administrator"));
        if (!IdRoleResult.Succeeded)
            throw new Exception("Administrator role wasnt created.");
    }

    if (!roleMngr.RoleExists("User")) {
        IdRoleResult = roleMngr.Create(new IdentityRole("User"));
        if (!IdRoleResult.Succeeded)
            throw new Exception("User role wasnt created.");
    }

    var userMngr = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
    ApplicationUser appUser;

    var q = from user in userMngr.Users
            where user.UserName == "Admin@admin.com"
            select user;
    if (q.Count() == 0) {
        appUser = new ApplicationUser() { UserName = "Admin@admin.com" };
        IdUserResult = userMngr.Create(appUser, "pa$$word");
        if (IdUserResult.Succeeded) {
            IdRoleResult = userMngr.AddToRole(appUser.Id, "Administrator");
            if (!IdRoleResult.Succeeded)
                throw new Exception("Admin user wasn't added to Administrator role.");
        } else
            throw new Exception("Admin user wasn't created.");
    }

    q = from user in userMngr.Users
        where user.UserName == "user@user.net"
        select user;
    if (q.Count() == 0) {
        appUser = new ApplicationUser() { UserName = "user@user.net" };
        IdUserResult = userMngr.Create(appUser, "user");
        if (IdUserResult.Succeeded) {
            IdRoleResult = userMngr.AddToRole(appUser.Id, "User");
            if (!IdRoleResult.Succeeded)
                throw new Exception("User user wasn't added to User role.");
        } else
            throw new Exception("User user wasn't created.");
    }
}

在這里,我發現該代碼引發異常,並顯示消息“未創建用戶”。

throw new Exception("User user wasn't created.");

我認為您應該在對象結果'IdUserResult'讀取錯誤,並使用功能CreateAsync()插入用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM