当前位置: 首页 > news >正文

心理网站模板做网站有什么作用

心理网站模板,做网站有什么作用,省内注销二建 建设部网站更新慢,人人设计网官方网站文章目录 一、引言二、什么是 JSON Web 令牌#xff1f;三、什么是 JSON Web 令牌结构#xff1f;四、设置 JWT 令牌身份验证4.1 创建新的 .NET 8 Web API 项目4.2 安装所需的 NuGet 软件包4.3 创建 JWT 配置模型4.4 将 JWT 配置添加到您的 appsettings.json 中4.5 为 Config… 文章目录 一、引言二、什么是 JSON Web 令牌三、什么是 JSON Web 令牌结构四、设置 JWT 令牌身份验证4.1 创建新的 .NET 8 Web API 项目4.2 安装所需的 NuGet 软件包4.3 创建 JWT 配置模型4.4 将 JWT 配置添加到您的 appsettings.json 中4.5 为 Configuration 配置 DIProgram.cs4.6 配置 JWT 身份验证扩展4.7 在 Program.cs 配置4.8 创建 Token 生成服务4.9 注册 Token Service4.10 添加登录端点或控制器4.11 新增 SwaggerConfiguration方便测试4.12 添加 AppUser4.13 为所有 Controller 或端点添加 Authorize 属性 五、测试 一、引言 本文介绍了在 .NET 8 Web 应用程序中通过 AppUser 类实现 JWT 令牌身份验证的过程。JWT 身份验证是保护 API 的标准方法之一它允许无状态身份验证因为签名令牌是在客户端和服务器之间传递的。 二、什么是 JSON Web 令牌 JSON Web 令牌JWT是一种开放标准RFC 7519它定义了一种紧凑且自包含的方式用于将信息作为 JSON 对象在各方之间安全地传输。此信息是经过数字签名的因此可以验证和信任。可以使用密钥使用 HMAC 算法或使用 RSA 或 ECDSA 的公钥/私钥对对 JWT 进行签名。 三、什么是 JSON Web 令牌结构 在其紧凑形式中JSON Web 令牌由三个部分组成由点.分隔它们是 页眉有效载荷签名 因此JWT 通常如下所示xxxxx.yyyyy.zzzzz 四、设置 JWT 令牌身份验证 4.1 创建新的 .NET 8 Web API 项目 dotnet new webapi -n JwtAuthApp4.2 安装所需的 NuGet 软件包 dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer dotnet add package Microsoft.IdentityModel.Tokens4.3 创建 JWT 配置模型 using System.Globalization; namespace JwtAuthApp.JWT {public class JwtConfiguration{public string Issuer { get; } string.Empty;public string Secret { get; } string.Empty;public string Audience { get; } string.Empty;public int ExpireDays { get; }public JwtConfiguration(IConfiguration configuration){var section configuration.GetSection(JWT);Issuer section[nameof(Issuer)];Secret section[nameof(Secret)];Audience section[nameof(Audience)];ExpireDays Convert.ToInt32(section[nameof(ExpireDays)], CultureInfo.InvariantCulture);}} }4.4 将 JWT 配置添加到您的 appsettings.json 中 {Jwt: {Issuer: JwtAuthApp,Audience: https://localhost:7031/,Secret: 70FC177F-3667-453D-9DA1-AF223DF6C014,ExpireDays: 30} }4.5 为 Configuration 配置 DIProgram.cs builder.Services.AddTransientJwtConfiguration();4.6 配置 JWT 身份验证扩展 using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.DataProtection; using Microsoft.IdentityModel.Tokens; using System; using System.Text;namespace JwtAuthApp.JWT {public static class JwtAuthBuilderExtensions{public static AuthenticationBuilder AddJwtAuthentication(this IServiceCollection services, IConfiguration configuration){var jwtConfiguration new JwtConfiguration(configuration);services.AddAuthorization();return services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options {options.SaveToken true;options.TokenValidationParameters new TokenValidationParameters{ValidateIssuer true,ValidateAudience true,ValidateLifetime true,ValidateIssuerSigningKey true,ValidIssuer jwtConfiguration.Issuer,ValidAudience jwtConfiguration.Audience,IssuerSigningKey new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtConfiguration.Secret)),ClockSkew TimeSpan.Zero};options.Events new JwtBearerEvents{OnMessageReceived context {var token context.Request.Headers[Authorization].ToString()?.Replace(Bearer , );if (!string.IsNullOrEmpty(token)){context.Token token;}return Task.CompletedTask;}};});}} }4.7 在 Program.cs 配置 var builder WebApplication.CreateBuilder(args);// Add services to the container. builder.Services.AddControllers(); builder.Services.AddJwtAuthentication(builder.Configuration);var app builder.Build();// Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) {app.UseSwagger();app.UseSwaggerUI(); }app.UseHttpsRedirection(); app.UseAuthentication(); app.UseAuthorization();app.MapControllers();app.Run();4.8 创建 Token 生成服务 using Microsoft.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text;namespace JwtAuthApp.JWT {public class TokenService{private readonly JwtConfiguration _config;public TokenService(JwtConfiguration config){_config config;}public string GenerateToken(string userId, string email){var claims new[]{new Claim(JwtRegisteredClaimNames.Sub, userId),new Claim(JwtRegisteredClaimNames.Email, email)};var key new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.Secret));var creds new SigningCredentials(key, SecurityAlgorithms.HmacSha256);var token new JwtSecurityToken(issuer: _config.Issuer,audience: _config.Audience,claims: claims,expires: DateTime.Now.AddDays(_config.ExpireDays),signingCredentials: creds);return new JwtSecurityTokenHandler().WriteToken(token);}} }4.9 注册 Token Service builder.Services.AddTransientTokenService();4.10 添加登录端点或控制器 app.MapPost(/login, [FromBody] LoginRequest request, TokenService tokenService) {if (request.Username admin request.Password admin){var userId 123456; // 从数据库获取用户 IDvar email adminexample.com; // 从数据库获取用户邮箱var token tokenService.GenerateToken(userId, email);return Results.Ok(new { token });}return Results.Unauthorized(); }) .WithName(Login) .RequireAuthorization();4.11 新增 SwaggerConfiguration方便测试 using Microsoft.OpenApi.Models; using Swashbuckle.AspNetCore.SwaggerGen;namespace JwtAuthApp.JWT {public static class SwaggerConfiguration{public static void Configure(SwaggerGenOptions options){options.SwaggerDoc(v1, new OpenApiInfo{Title JWT Auth API,Version v1,Description A sample API for JWT Authentication});options.AddSecurityDefinition(Bearer, new OpenApiSecurityScheme{Description JWT Authorization header using the Bearer scheme.,Name Authorization,In ParameterLocation.Header,Type SecuritySchemeType.Http,Scheme Bearer,BearerFormat JWT});options.AddSecurityRequirement(new OpenApiSecurityRequirement{{new OpenApiSecurityScheme{Reference new OpenApiReference{Type ReferenceType.SecurityScheme,Id Bearer}},Array.Emptystring()}});}} }4.12 添加 AppUser public class AppUser : ClaimsPrincipal{ public AppUser(IHttpContextAccessor contextAccessor) : base(contextAccessor.HttpContext.User) { }public string UserID FindFirst(CustomerConst.UserID)?.Value ?? ;public string OpenId FindFirst(CustomerConst.OpenId)?.Value ?? ; }builder.Services.AddHttpContextAccessor(); builder.Services.AddTransientAppUser();4.13 为所有 Controller 或端点添加 Authorize 属性 app.MapGet(/weatherforecast, [Authorize] () {// ... }) .WithName(GetWeatherForecast) .WithOpenApi();app.MapGet(/user, [Authorize] (AppUser user) {return Results.Ok(new { user.Email }); }) .WithName(GetUserEmail) .WithOpenApi();五、测试 所有端点获取天气预报在登录前收到错误 401 未授权登录返回的 jwt 令牌在 Swagger Auth 中使用 jwt 令牌获取天气预报返回结果获取用户电子邮件 返回用户电子邮件
http://www.hkea.cn/news/14359324/

相关文章:

  • 网站建设内容存储wordpress百万并发
  • 用微信怎么做企业网站wordpress 超过2m
  • 手机端网站建设备案wordpress弄个人博客好吗
  • 杭州网站建设及推广网站建设文字教程
  • 淘客做网站多少钱长春 网站 设计
  • 网站建设的主要内容包括wordpress获取分类下所有文章
  • 加强机关网站建设湛江人做寄生虫网站
  • 浙江二建建设集团有限公司网站wordpress主题安装在哪里
  • 2015做那些网站致富wordpress短代码页面
  • 30g月流量网站wordpress 商城
  • 网站建设模板网站aso网站
  • 怎么制作公司自己网站网站友情链接要加什么用
  • 苏州建网站的公司招各省施工备案网站
  • 优良的定制网站建设服务商深圳网页设计公司在哪
  • 网站建设费用核算科目北京外贸进出口公司
  • 网站建设86215wordpress调用post
  • 建设厅网站更改登陆密码安徽省在建项目查询
  • 东营北京网站建设wordpress修改密码函数
  • 中国建设信用卡网站上海网站建设大概多少钱
  • wap网站建设是什么邯郸网站建设哪儿好
  • 如何查看网站的访问量注册建筑劳务公司需要什么条件
  • 网站开发提问wordpress 等级权限插件
  • 安庆商务网站建设wordpress移动端禁止放大
  • 路桥网站建设公司html表格的完整代码
  • 电子商务网站建设与运营方向域名 备案 没有网站
  • 网站盈利模式设计重庆智能网站建设企业
  • 深圳网站建设好不好地图网站设计
  • 饮料企业哪个网站做的比较好短视频营销策略
  • 网站排名突然掉了怎么回事做网站cookie传值
  • 营销展示型网站模板如何寻找做网站的客户