[英]ASP.NET Core 3.1 doesn't authorize bearer token
我在我的控制器操作中添加了[Authorize(Roles="CompanyRole")]
注釋,並且在Startup
類中我有:
app.Use(async (context, next) =>
{
if(context.Session.GetString("user") != null)
{
var tk = JsonConvert.DeserializeObject<UserModel>(context.Session.GetString("user"));
if (!String.IsNullOrEmpty(tk.Token))
{
context.Request.Headers.Add("Authorization", "Bearer " + tk.Token);
}
await next.Invoke();
}
else
{
context.Request.Path = "/Home/Login";
await next.Invoke();
}
});
如果我刪除了Authorize
屬性,我就可以使用以下方法獲取用戶信息和所有聲明
var A = User.Identity.Name;
其中一個角色是CompanyRole
,但是當我嘗試執行該控制器操作時,我得到了“未經授權”。
您應該考慮中間件的優先級並在 Startup.cs 文件中的授權中間件之前注冊您的優先級。
app.Use(async (context, next) =>
{
if(context.Session.GetString("user") != null)
{
var tk = JsonConvert.DeserializeObject<UserModel>(context.Session.GetString("user"));
if (!String.IsNullOrEmpty(tk.Token))
{
context.Request.Headers.Add("Authorization", "Bearer " + tk.Token);
}
await next.Invoke();
}
else
{
context.Request.Path = "/Home/Login";
await next.Invoke();
}
});
app.UseAuthorization();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.