我在控制器操作中添加了[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
,但是当我尝试执行该控制器操作时,我得到了“未授权”的信息。
答案 0 :(得分:1)
您应该考虑中间件的优先级,并在授权中间件之前将其注册在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();