我正在尝试在授权中同时使用JWT方案和Cookie方案。如Microsoft article中所述。当我这样做时,我可以看到它适用于使用JWT授权的请求。我通过向邮递员发出包含JWT令牌的请求来进行尝试。但是,它对于从我的站点的视图发出的Ajax请求不起作用,因此利用了Cookie授权。
缩小这个问题,向我表明,即使我明确指定了Cookie方案,它也不起作用:
[Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)]
只有在我完全不指定方案的情况下,它才有效:
[Authorization]
这是我的Startup.cs:
services.AddAuthentication()
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme)
.AddJwtBearer(cfg =>
{
cfg.TokenValidationParameters = new TokenValidationParameters()
{
ValidIssuer = _configuration["Tokens:Issuer"],
ValidAudience = _configuration["Tokens:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Tokens:Key"]))
};
});
还有其他人遇到这个问题吗?还是有人知道为什么显式设置Cookie方案不起作用?