簡體   English   中英

如何將角色基礎授權應用於使用令牌基礎身份驗證的Web API 2應用程序?

[英]How to apply role base authorization to Web API 2 application that use token base authentication?

我創建了一個Web API 2應用程序,該應用程序使用基於令牌的身份驗證系統。 我使用本教程來實現對應用程序的身份驗證。

然后,我使用種子方法將角色添加到系統中。

        protected override void Seed(TBA.Models.AuthContext context)
        {
            if (!context.Roles.Any(r => r.Name == "SuperAdmin"))
            {
                var store = new RoleStore<IdentityRole>(context);
                var manager = new RoleManager<IdentityRole>(store);
                var role = new IdentityRole { Name = "SuperAdmin" };

                manager.Create(role);
            }
        }

然后,將用戶添加到用戶角色。

        public async Task<IdentityResult> RegisterUser(UserModel userModel)
        {
            IdentityUser user = new IdentityUser
            {
                UserName = userModel.UserName
            };

            var result =  await _userManager.CreateAsync(user, userModel.Password);
            await _userManager.AddToRoleAsync(user.Id, userModel.UserRole);
            return result;
        }

然后,我嘗試訪問以下端點。

        [Authorize(Roles = "SuperAdmin")]
        [Route("GetBySuperAdmin")]
        public IHttpActionResult GetBySuperAdmin()
        {
            return Ok("Get By Super Admin");
        }

它給我下面的錯誤信息。

"message": "Authorization has been denied for this request."

我應該改變些什么來使它正確? 在訪問Web API 2應用程序中的端點之前如何檢查角色?

在將用戶添加到角色后,您必須注銷然后再次登錄(生成新令牌)。

令牌具有有關用戶角色的信息,因此在更改角色后,您必須刷新令牌以具有有關新角色的信息。

暫無
暫無

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

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