簡體   English   中英

Web API個人帳戶:如何添加角色

[英]Web API Individual Accounts: how add Roles

在ASP Web API中,我使用個人帳戶來注冊用戶。 我已經按照此官方教程實現了此功能:

Web API個人帳戶

現在,我希望能夠為用戶分配一個角色:執行Register方法時,我還要在POST請求中傳遞該角色:

{
   "UserName": "Alice",
   "Password": "password123",
   "ConfirmPassword": "password123",
   "Role": "admin"                  -> i want add this
}

並且Register方法必須正確評估數據庫的表。 如何處理Web API個人帳戶中的角色? 有教程嗎?

謝謝

創建用戶和相應角色后,只需在代碼中添加以下行

var roleresult = UserManager.AddToRole(currentUser.Id, "RoleName");

您還應該將Role屬性添加到傳遞給Register方法的視圖模型(通常稱為RegisterBindingModel )中。

更新資料

這是一個完整的示例,一個Register方法的外觀( RoleEntityUserEntity是我在Identity中相應類的實現,但這也可以與您的自定義實現一起使用)

public async Task<IdentityResult> RegisterAsync(RegisterViewModel model)
{
    var user = new UserEntity { UserName = model.UserName };
    var role = model.Role.ToString();

    if (await _roleManager.FindByNameAsync(role) == null)
    {
        var roleResult = await _roleManager.CreateAsync(new RoleEntity(role));

        if (roleResult != IdentityResult.Success)
        {
            return roleResult;
        }
    }

    var result = await _userManager.CreateAsync(user, model.Password);

    if (!result.Succeeded)
    {
        return result;
    }

    var addToRoleResult = await _userManager.AddToRoleAsync(user.Id, role);

    return !addToRoleResult.Succeeded ? addToRoleResult : IdentityResult.Success;
}

我的RegisterViewModel看起來像這樣

public class RegisterViewModel
{
    [Required(ErrorMessage="This field is required")]
    [Display(Name = "User name", Prompt="Please enter user name...")]
    public string UserName { get; set; }

    [Required(ErrorMessage = "This field is required")]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "Password", Prompt="Please enter password...")]
    public string Password { get; set; }

    [DataType(DataType.Password)]
    [Display(Name = "Confirm password", Prompt = "Please enter confirm password...")]
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
    public string ConfirmPassword { get; set; }

    [Required(ErrorMessage = "This field is required")]
    [Display(Name = "Role")]
    public Roles Role { get; set; }
}

暫無
暫無

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

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