asp.net core webpi 结合jwt实现登录鉴权
1.安装jwt nuget包
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.25" /><PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="7.0.3" />
1.1创建jwt配置类
namespace webapi
{/// <summary>/// 有效载荷配置信息/// </summary>public class JwtTokenOption{/// <summary>/// Token 过期时间,默认为60分钟/// </summary>public int TokenExpireTime { get; set; } = 60;/// <summary>/// 接收人/// </summary>public string Audience { get; set; }/// <summary>/// 秘钥(RSA)/// </summary>public string SecurityKey { get; set; }/// <summary>/// 签发人/// </summary>public string Issuer { get; set; }}
}
2.配置jwt信息
//注入jwt配置服务var jwtOption = builder.Configuration.GetSection("JwtTokenOption");builder.Services.Configure<JwtTokenOption>(jwtOption);JwtTokenOption jwtTokenOption = jwtOption.Get<JwtTokenOption>();//认证builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(jwtBearerOptions =>{jwtBearerOptions.TokenValidationParameters = new TokenValidationParameters{ValidAlgorithms = new string[] { "HS256" },//对称加密IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwtTokenOption.SecurityKey)),//拿到SecurityKeyValidateIssuer = true,//是否验证IssuerValidateAudience = true,//是否验证AudienceValidateLifetime = false,//是否验证失效时间ClockSkew = TimeSpan.FromSeconds(30),//时钟脉冲相位差ValidateIssuerSigningKey = true,//是否验证SecurityKeyValidAudience = jwtTokenOption.Audience,//AudienceValidIssuer = jwtTokenOption.Issuer,//Issuer,这两项和前面签发jwt的设置一致};});;
3.生成token
[HttpPost("{username}")][AllowAnonymous]public IActionResult tokensc(){// 有效载荷,大家可以自己写,爱写多少写多少;尽量避免敏感信息var claims = new[]{new Claim(ClaimTypes.Name, "pzx"),new Claim("NickName","aa"),new Claim("Role","Administrator"),//传递其他信息};// payload 中的信息声明var jwtSecurityToken = new JwtSecurityToken(claims: claims,expires: DateTime.Now.AddMinutes(_jwtTokenOption.TokenExpireTime),signingCredentials: new SigningCredentials(new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_jwtTokenOption.SecurityKey)), SecurityAlgorithms.HmacSha256),issuer: _jwtTokenOption.Issuer,audience: _jwtTokenOption.Audience);var tokenString = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken); ;return Ok(tokenString);}
4.在需要的控制器或方法上,使用过滤器(只有token解析成功,没有过期才可以访问接口)
[Authorize]
[HttpGet]
public IActionResult Get(){
return ok();
}
5.可以结合IdentityService4身份认证框架使用
相关文章:
asp.net core webpi 结合jwt实现登录鉴权
1.安装jwt nuget包 <PackageReference Include"Microsoft.AspNetCore.Authentication.JwtBearer" Version"6.0.25" /><PackageReference Include"System.IdentityModel.Tokens.Jwt" Version"7.0.3" />1.1创建jwt配置类 n…...
【香橙派】实战记录2——烧录安卓镜像及基本功能
文章目录 一、安卓烧录二、安卓基本功能1、蓝牙2、相机功能3、投屏 一、安卓烧录 检查环境:检查PC系统,确保有Microsoft Visual C 2008 Redistrbutable - x86,否则在官网下载的官方工具 - 安卓镜像烧录工具里运行vcredist_x86.exe。 插入存储…...
【spring(六)】WebSocket网络传输协议
🌈键盘敲烂,年薪30万🌈 目录 核心概要: 概念介绍: 对比HTTP协议:⭐ WebSocket入门案例:⭐ 核心概要: websocket对比http 概念介绍: WebSocket是Web服务器的一个组件…...
MidJourney笔记(6)-Niji模式
Niji模式 回顾一下,在讲解settings命令时,我们可以看到一个Niji字眼。 而且是在Midjourney V4之后才有的,那Niji到底是什么? Niji是MidJourney中用于绘制二次元/动漫风格的模型,那Niji的V4和V5有什么区别呢?...
Linux命令(139)之ab
linux命令之ab 1.ab介绍 linux命令ab(E.g:apachebench)是apache自带的压力测试工具。ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL进行访问。由于ab命令测试是基于URL的,因此,它既可以用来测试apache httpd的负载压力&#x…...
笔记----单纯剖分----1
笔记----单纯剖分 定义 线性组合仿射组合: 线性组合的系数为1凸组合: 仿射组合所有的系数都是正数 凸集 R^m 的 任意有限个点的凸组合仍在其中的子集仿射子空间 R^m 的 任意有限个点的仿射组合仍在其中的子集凸包 conv(A) A是R^m的一个子集 A的所有有限凸…...
mybatis源码(五)springboot pagehelper实现查询分页
1、背景 springboot的pagehelper插件能够实现对mybatis查询的分页管理,而且在使用时只需要提前声明即可,不需要修改已有的查询语句。使用如下: 之前对这个功能一直很感兴趣,但是一直没完整看过,今天准备详细梳理下。按…...
【BUG】SpringBoot项目Long类型数据返回前端精度丢失问题
问题描述 后端再给前端返回数据,使用Long类型的时候存在精度丢失问题。 原因分析: 分布式项目中广泛使用雪花算法生成ID作为数据库表的主键,Long类型的雪花ID有19位,而前端接收Long类型用的是number类型,但是number…...
UI自动化Selenium find_elements和find_element的区别
# 如果获取的element是list,那么需要用find_elements方法;此方法会返回list,然后使用len() 方法,计算对象的个数; # find_element方法返回的不是list对象,所以导致没办法计算对象个数 # 1.返回值类型不同…...
【Android】Window和WindowManager
文章目录 理解Window和WindowManagerWindow和WindowManagerWindow的内部机制Window的添加过程Window的删除过程Window的更新过程 Window的创建过程Activity的Window创建过程Dialog的Window创建过程Toast的Window创建过程 理解Window和WindowManager Window是一个抽象类…...
如何解决 Python ModuleNotFoundError 错误
模块对于开发 Python 程序很重要。 使用模块,我们可以分离代码库的不同部分以便于管理。 使用模块时,了解它们的工作方式以及如何将它们导入我们的代码非常重要。 如果没有这种理解或错误,我们可能会遇到不同的错误。 此类错误的一个示例是…...
Day62.算法训练
718. 最长重复子数组 class Solution {public int findLength(int[] nums1, int[] nums2) {int max 0;int[][] dp new int[nums1.length][nums2.length];for (int i 0; i < nums1.length; i) {for (int j 0; j < nums2.length; j) {if (nums1[i] nums2[j]) {if (i …...
Linux smbd命令教程:如何配置和管理Samba服务器(附案例详解和注意事项)
Linux smbd命令介绍 smbd是Samba套件的一部分。smbd是一个服务器守护进程,为Windows客户端提供文件共享和打印服务。服务器使用SMB(或CIFS)协议为客户端提供文件空间和打印服务。这与LanManager协议兼容,可以为LanManager客户端提…...
音视频学习(十九)——rtsp收流(tcp方式)
前言 本文主要介绍以tcp方式实现rtsp拉流。 流程图 流程说明: 客户端发起tcp请求,如向真实相机设备请求,端口一般默认554;tcp连接成功,客户端与服务端开始rtsp信令交互;客户端收到play命令响应后,开启线…...
LangChain(0.0.340)官方文档三:Prompts上——自定义提示模板、使用实时特征或少量示例创建提示模板
文章目录 一、 Prompt templates1.1 langchain_core.prompts1.2 PromptTemplate1.2.1 简介1.2.2 ICEL1.2.3 Validate template 1.3 ChatPromptTemplate1.3.1 使用role创建1.3.2 使用MessagePromptTemplate创建1.3.3 自定义MessagePromptTemplate1.3.3.1 自定义消息角色名1.3.3.…...
【算法】合并K个升序链表
这道题主要考察的是归并排序,因为已经升序过了,更好理解了。 当然也可以采用分治的思路;或采用最小堆的思路;面试中校招同学写出一种即可,如果能全概览讲一下,就更加分了。 #############################…...
持续集成交付CICD:GitLab Webhook触发Jenkins流水线
目录 一、实验 1.Jenkins远程下载GiaLab仓库代码 2.curl远程触发Jenkins流水线 3.GitLab Webhook触发Jenkins流水线 二、问题 1.GitLab配置Webhook时报错 一、实验 1.Jenkins远程下载GiaLab仓库代码 (1) Jenkins添加选项参数 (2)添加字符参数 (3)查看构建参数情况 (4)添…...
计算机网络测试题
一 单项选择题(5分) 1、假设要发送的数据为101110,采用CRC的生成多项式是X31,试求应添加在数据后面的余数。(5分) 110 011(答案) 101 001 实际得分:5分 二 填空题(95分) 1、以下3个子地址块…...
vscode如何在没有网络的情况下安装插件
vscode如何在没有网络的情况下安装插件 start 遇到没有网络的电脑,无法直接从插件市场安装vscode的插件。写一下 vscode 插件离线安装的方法. 解决方案 目标电脑没有可以安装插件的网络,那我们只能在有网络的环境下载好我们的插件。然后拷贝软件到无…...
自定义类型:结构体、联合、枚举
目录 一、⾃定义类型:结构体 1.结构体类型 1. 1结构体类型的声明 结构体变量的创建和初始化 1.2 结构的特殊声明 1.3 结构的自引用 2. 结构体内存对齐 ①:对齐规则 ②:offsetof函数 ③:为什么存在内存对⻬? ④ 修改默认对⻬…...
3秒破解百度网盘提取码:告别资源获取困扰的智能解决方案
3秒破解百度网盘提取码:告别资源获取困扰的智能解决方案 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经面对一个急需的学习资料或软件资源,却因为不知道百度网盘提取码而束手无策࿱…...
OpenClaw多模型对比:Gemma-3-12b-it与Qwen在自动化任务中的表现
OpenClaw多模型对比:Gemma-3-12b-it与Qwen在自动化任务中的表现 1. 测试背景与实验设计 去年夏天,当我第一次尝试用OpenClaw自动化处理日常办公任务时,面对琳琅满目的大模型选项陷入了选择困难。作为个人开发者,既希望模型足够聪…...
Graphormer多任务预测指南:property-guided与catalyst-adsorption双模式切换详解
Graphormer多任务预测指南:property-guided与catalyst-adsorption双模式切换详解 1. Graphormer模型概述 Graphormer是一种基于纯Transformer架构的图神经网络,专门为分子图(原子-键结构)的全局结构建模与属性预测而设计。这个创…...
Python数据分析环境搭建:Phi-4-mini-reasoning辅助Anaconda管理
Python数据分析环境搭建:Phi-4-mini-reasoning辅助Anaconda管理 1. 为什么需要智能环境管理 刚接触Python数据分析时,最头疼的就是环境配置问题。不同项目需要不同版本的Python和库,手动管理容易导致依赖冲突。Anaconda虽然提供了便利的包管…...
从PX4的FRD到Mavros的FLU:手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点
从PX4的FRD到Mavros的FLU:无人机坐标系转换实战指南 当你在ROS环境下通过Mavros向PX4飞控发送位置指令时,是否遇到过无人机朝完全相反方向飞行的情况?这种"方向错乱"的根源往往在于坐标系理解的偏差。本文将彻底解开PX4与Mavros之间…...
【数据结构与算法】第23篇:树、森林与二叉树的转换
一、树的存储结构1.1 双亲表示法每个节点存储数据和父节点下标,适合找父节点的场景。c#define MAX_SIZE 100 typedef struct {int data;int parent; // 父节点下标 } PNode;typedef struct {PNode nodes[MAX_SIZE];int root; // 根节点下标int size; } PTree;缺…...
2025届学术党必备的六大AI辅助写作网站横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能于学术论文写作里的应用愈发广泛,其核心价值展现成高效文献检索、结构化…...
如何快速上手接口测试?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 大量线上BUG表明,对接口进行测试可以有效提升产品质量,暴露手工测试时难以发现的问题,同时也能缩短测试周期,提升测…...
Go语言的网络编程:从TCP到WebSocket
Go语言的网络编程:从TCP到WebSocket 网络编程的重要性 在现代软件开发中,网络编程是一项基本技能。通过网络编程,我们可以: 构建客户端-服务器应用程序实现分布式系统开发 Web 应用和 API实现实时通信功能与其他服务进行集成 Go 语…...
Transformer位置编码层代码详解:从正弦公式到PyTorch实现(附避坑指南)
Transformer位置编码层代码详解:从正弦公式到PyTorch实现(附避坑指南) 在自然语言处理领域,Transformer架构彻底改变了序列建模的方式。与传统RNN和LSTM不同,Transformer完全依赖自注意力机制来捕捉序列中的依赖关系。…...
