针对这个话题我将给出详细的攻略,内容如下:
asp.net core3.1cookie和jwt混合认证授权实现多种身份验证方案
简介
在asp.net core3.1中,使用cookie和jwt混合认证授权的方式来实现多种身份验证方案非常实用,本文将详细讲解在asp.net core3.1中如何实现这样的混合认证授权机制。
实现cookie和jwt的混合认证授权步骤
Step 1: 安装相关nuget包
Install-Package Microsoft.AspNetCore.Authentication.Cookies
Install-Package Microsoft.AspNetCore.Authentication.JwtBearer
Step 2: 使用AddCookie和AddJwtBearer方法来添加cookie和JwtBearer身份验证服务到DI容器中
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.Cookie.Name = "CustomCookieName";
options.LoginPath = "/Account/Login";
})
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["Jwt:Issuer"],
ValidAudience = Configuration["Jwt:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"]))
};
});
}
Step 3: 配置身份验证和授权中间件
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseAuthentication();
app.UseAuthorization();
}
Step 4: 实现多种身份验证方案
在控制器中使用多个[Authorize]属性即可实现多种身份验证方案。下面是两个示例:
示例1:只允许cookie认证通过的用户访问
[Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)]
public IActionResult Index()
{
return View();
}
示例2:只允许jwt认证通过的用户访问
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public IActionResult Index()
{
return View();
}
总结
使用asp.net core3.1中的cookie和jwt混合认证授权机制,可以很方便地实现多种身份验证方案。在以上步骤中,我们介绍了如何在asp.net core3.1中添加cookie和JwtBearer身份验证服务到DI容器中,并最终实现了混合认证授权机制的步骤。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net core3.1cookie和jwt混合认证授权实现多种身份验证方案 - Python技术站