簡體   English   中英

ASP.NET Core 3.1 不授權不記名令牌

[英]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.

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