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函数 ③:为什么存在内存对⻬? ④ 修改默认对⻬…...
黎阳之光人员无感技术——赋能边防与城市智慧发展
无感戍边 数筑屏障|黎阳之光人员无感技术赋能智慧边防建设在国家边境安全防控体系建设中,边防工作始终承担着守护国土、防范风险、维护边境稳定的重要职责。我国边境线地理环境复杂,涵盖高原、荒漠、口岸、界江等多元场景,气候条件…...
Onekey Steam清单下载工具:快速获取游戏清单的完整指南
Onekey Steam清单下载工具:快速获取游戏清单的完整指南 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey Onekey是一款专业的开源Steam Depot清单下载工具,能够直接连接Ste…...
从CT扫描到AI模型:避开DICOM体位信息这个‘隐形坑’,提升医学影像分析准确率
从CT扫描到AI模型:避开DICOM体位信息这个‘隐形坑’,提升医学影像分析准确率 在医疗AI模型的开发过程中,数据预处理环节往往被工程师们视为"脏活累活"——既没有模型调参的成就感,也不如算法设计那样引人注目。然而&…...
AI识别+yolo11室内监控系统 AI办公室监控系统
办公室监控系统 一个基于 Flask 的 Web 应用程序,通过计算机视觉和 YOLO 对象检测来监控办公室工作区域。系统跟踪人员在不同工作区域的存在情况,并记录在每个区域停留的时间。 功能 使用 YOLOv8 实现实时人员检测和跟踪监控多个工作区域跟踪每个定义工…...
从“杯子放球”到“射击命中”:用Python模拟帮你彻底搞懂离散随机变量
从“杯子放球”到“射击命中”:用Python模拟帮你彻底搞懂离散随机变量 概率论中的离散随机变量概念常常让初学者感到抽象难懂。传统的数学推导虽然严谨,但缺乏直观性。本文将带你用Python代码亲手模拟几个经典概率问题,通过可视化手段让这些概…...
谷歌 I/O 2026 炸场:Gemini 3.5 Flash 震撼发布!反超 3.1 Pro,开启“全自动 Agent 狂飙”时代
在刚刚开幕的 Google I/O 2026 开发者大会上,谷歌正式扔下了一颗重磅炸弹:发布全新 Gemini 3.5 系列 的首款旗舰轻量模型 —— Gemini 3.5 Flash。 这次的发布极为硬核,谷歌彻底打破了我们对 “Flash 是低配版/轻量版” 的固有认知。根据 Dee…...
Faster RCNN PyTorch CUDA扩展:RoI Pooling层的GPU实现终极指南
Faster RCNN PyTorch CUDA扩展:RoI Pooling层的GPU实现终极指南 【免费下载链接】faster_rcnn_pytorch Faster RCNN with PyTorch 项目地址: https://gitcode.com/gh_mirrors/fa/faster_rcnn_pytorch 在目标检测领域,Faster RCNN一直是经典算法之…...
Aspia代码架构解析:从基础库到完整应用的开发思路
Aspia代码架构解析:从基础库到完整应用的开发思路 【免费下载链接】aspia Remote desktop and file transfer tool. 项目地址: https://gitcode.com/gh_mirrors/as/aspia Aspia是一款功能强大的开源远程桌面和文件传输工具,支持Windows、Linux和m…...
终极碧蓝航线自动化脚本:Alas智能辅助工具完整指南
终极碧蓝航线自动化脚本:Alas智能辅助工具完整指南 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript AzurLaneAuto…...
波卡XCMP深度解析:跨链通信的核心标准与实战指南
波卡XCMP深度解析:跨链通信的核心标准与实战指南 引言:多链时代的“通信协议” 在区块链从“单链”走向“多链”甚至“链网”的演进中,跨链互操作性已成为决定生态繁荣与否的关键。波卡(Polkadot)提出的XCMP࿰…...
