Asp.net core 2.0+提供了多重身份验证方案,可以同时使用Cookie和Bearer身份验证。下面是一个带有代码示例的解决方案:
Microsoft.AspNetCore.Authentication.Cookies
Microsoft.AspNetCore.Authentication.JwtBearer
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.Cookie.Name = "YourCookieName";
options.LoginPath = "/Account/Login";
})
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "YourIssuer",
ValidAudience = "YourAudience",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("YourSigningKey"))
};
});
app.UseAuthentication();
[Authorize]
public IActionResult Index()
{
return View();
}
这样就完成了多重身份验证方案的配置。在进行身份验证时,如果请求中包含有效的Bearer Token,则使用Bearer身份验证;否则,使用Cookie身份验证。您可以根据需要自定义Cookie和Bearer的选项和参数。