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

core Webapi jwt 认证

core cookie 验证

Web API Jwt

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
》》》》用户信息

namespace WebAPI001.Coms
{public class Account{public string UserName { get; set; }public string UserPassword { get; set; }public string UserRole { get; set; }}
}

》》》获取jwt类

using Microsoft.AspNetCore.Mvc;
using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Runtime.CompilerServices;
using System.Security.Claims;
using System.Text;namespace WebAPI001.Coms
{public  class JwtHelper{      public static string GenerateJWT(Account user, IConfiguration _configuration){           byte[] keyBytes = Encoding.UTF8.GetBytes(_configuration?.GetValue<string>("TokenParameter:Secret"));var securityKey = new SymmetricSecurityKey(keyBytes);// 创建JWT的签名凭证var signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);// 设置JWT的Claimsvar claims = new[]{new Claim(ClaimTypes.Name, user.UserName),new Claim(ClaimTypes.Role, user.UserRole),// 添加其他需要的声明};// 创建JWT的Tokenvar token = new JwtSecurityToken(issuer: _configuration.GetValue<string>("TokenParameter:Issuer"),audience: _configuration.GetValue<string>("TokenParameter:Audience"),claims: claims,expires: DateTime.Now.AddMinutes(_configuration.GetValue<int>("TokenParameter:AccessExpiration")),signingCredentials: signingCredentials);// 生成JWT字符串var jwtToken = new JwtSecurityTokenHandler().WriteToken(token);return jwtToken;}}
}

在这里插入图片描述

在这里插入图片描述

// Core 自带官方 JWT认证
// 开启Bearer 认证builder.Services.AddAuthentication(options =>{// 设置默认的身份验证和挑战方案为 JwtBeareroptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;}) // 配置 JWT Bearer 选项.AddJwtBearer(options =>{// 配置 Token 验证参数options.TokenValidationParameters = new TokenValidationParameters{// 验证发行者ValidateIssuer = true,// 验证受众ValidateAudience = true,// 验证令牌有效期ValidateLifetime = true,// 验证签名密钥ValidateIssuerSigningKey = true,// 发行者ValidIssuer = builder.Configuration["TokenParameter:Issuer"],// 受众ValidAudience = builder.Configuration["JokenParameter:Audience"],// 签名密钥IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["TokenParameter:Secret"])),AudienceValidator = (m, n, z) => {//自定义验证逻辑return true;}};options.Events = new JwtBearerEvents{OnAuthenticationFailed = context =>{// 如果过期,则把 是否过期 添加到  , 返回头信息中if (context.Exception.GetType() == typeof(SecurityTokenExpiredException)){context.Response.Headers.Add("Token-Expired", "true");}return Task.CompletedTask;}//OnForbidden//OnChallenge//OnMessageReceived//OnTokenValidated};});

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
源码

http://www.lryc.cn/news/501513.html

相关文章:

  • 【Redis】Redis基础——Redis的安装及启动
  • Oracle Recovery Tools工具一键解决ORA-00376 ORA-01110故障(文件offline)---惜分飞
  • 常用环境部署(二十四)——Docker部署开源物联网平台Thingsboard
  • SqlServer Doris Flink SQL 类型映射关系
  • Java 中的方法重写
  • v-for遍历多个el-popover;el-popover通过visible控制显隐;点击其他隐藏el-popover
  • 从 Excel 文件中读取数据生成 SQL 语句[快捷main方法]
  • 从0到1实现项目Docker编排部署
  • Vue框架入门
  • vue入门实战(二)父子组件显示,参数传递
  • 【Linux】Ubuntu:安装系统后配置
  • springboot-查看版本和版本所需JDK
  • fuxa搭建与使用(web组态)
  • 中间件--MongoDB部署及初始化js脚本(docker部署,docker-entrypoint-initdb.d,数据迁移,自动化部署)
  • C语言期末考试——常见考题(模拟考)
  • 流量过滤与路径转发控制
  • Ungoogled Chromium127编译指南 Windows篇 - 获取源码(七)
  • k8s 之 StatefulSet
  • iPhone 17 Air基本确认,3个大动作
  • 鸿蒙实现应用通知
  • ElasticSearch常见的索引_集群的备份与恢复方案
  • vue图片之放大、缩小、1:1、刷新、左切换、全屏、右切换、左旋咋、右旋转、x轴翻转、y轴翻转
  • Docker多架构镜像构建踩坑记
  • “pinn是无网格的”???
  • 换一个ip地址是什么意思?换一个网络ip地址会变吗
  • JavaWeb学习--cookie和session,实现登录的记住我和验证码功能
  • 深度学习:基于MindSpore的极简风大模型微调
  • 【LeetCode力扣热题100】【LeetCode 1】两数之和
  • 定制链接类名,两类跳转传参,vue路由重定向,404,模式设置
  • 【ArcGIS微课1000例】0135:自动生成标识码(长度不变,前面自动加0)