![](/img/trans.png)
[英]How to set some user data when token generate using web api bearer token base authentication
[英]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.