学习ASP.NET Core的身份认证(基于JwtBearer的身份认证10)
基于Cookie传递token的主要思路是通过用户身份验证后,将生成的token保存到Response.Cookies返回客户端,后续客户端访问服务接口时会自动携带Cookie到服务端以便验证身份。之前一直搞不清楚的是服务端程序如何从Cookie读取token进行认证(一般都是将token放到header中以特定键值对形式自动验证身份),不过参考文献2中给出示例,主要是处理JwtBearerEvents.OnMessageReceived事件,该事件是接收到 protocol message时触发,此时可以从Cookie中取出token并将其赋予MessageReceivedContext.Token属性,以便支撑身份验证。主要代码如下所示:
[HttpPost]
public async Task<ApiResult> LoginPlus([FromBody] UserInfo info)
{try{if (_dbClient.Queryable<AppUser>().Any(r => (r.Account == info.Name) && (r.Password == info.Password))){AppUser curUser = _dbClient.Queryable<AppUser>().First(r => (r.Account == info.Name) && (r.Password == info.Password));ApiResult result = new ApiResult();result.UserName = curUser.Name;var cookieOptions = new CookieOptions{HttpOnly = true, Secure = true, Expires = DateTime.UtcNow.AddDays(7) };Response.Cookies.Append("auth_token", GetToken(info.Name), cookieOptions);return result;}else{return new ApiResult("身份验证失败", 500, false);}}catch (Exception ex){return new ApiResult(ex.Message, 500, false);}
}
builder.Services.AddAuthentication(options =>
{...
}).AddJwtBearer(options =>
{...options.Events = new JwtBearerEvents{OnMessageReceived = context =>{var accessToken = context.Request.Cookies["auth_token"];if (!string.IsNullOrEmpty(accessToken)){//Bearer Token. This will give the application an opportunity to //retrieve a token from an alternative location.context.Token = accessToken;}return Task.CompletedTask;}};
});
先在postman中进行验证,如下面两图所示,调用LoginPlus后,会在客户端Cookie中存储值为auth_token的token数据。


调用另一需授权的服务时,不需要设置header,也不需要其它操作,postman会自动携带Cookie调用服务,也能正常调用并返回数据。如果手工删除Cookie,再调用服务时则会报401错误。


参考文献:
[1]百度AI智能问答,搜索条件:asp.net core 通过Cookie传递token
[2]https://www.cnblogs.com/CreateMyself/p/15755657.html
相关文章:
学习ASP.NET Core的身份认证(基于JwtBearer的身份认证10)
基于Cookie传递token的主要思路是通过用户身份验证后,将生成的token保存到Response.Cookies返回客户端,后续客户端访问服务接口时会自动携带Cookie到服务端以便验证身份。之前一直搞不清楚的是服务端程序如何从Cookie读取token进行认证(一般都…...
vscode环境中用仓颉语言开发时调出覆盖率的方法
在vscode中仓颉语言想得到在idea中利用junit和jacoco的覆盖率,需要如下几个步骤: 1.在vscode中搭建仓颉语言开发环境; 2.在源代码中右键运行[cangjie]coverage. 思路1:编写了测试代码的情况(包管理工具) …...
OLED--软件I2C驱动__标准库和HAL库
一、标准库---版本一 OLED.c--标准库 #include "stm32f10x.h" #include "OLED_Font.h"/*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x)) #define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x…...
【设计模式-行为型】观察者模式
一、什么是观察者模式 说起观察者模式,不得不说一位观察者模式的高级应用者,朱元璋。不知道大家有没有看过胡军演的电视剧《朱元璋》。这部剧背景是元朝末年,天下大乱,朱元璋自幼父母双亡,沦为乞丐,后遁入空…...
从理论到实践:Django 业务日志配置与优化指南
在现代 Web 开发中,日志记录是确保系统可维护性和可观测性的重要手段。通过合理的日志配置,我们可以快速定位问题、分析系统性能,并进行安全审计。本文将围绕 Django 框架,详细介绍如何配置和优化业务日志,确保开发环境和生产环境都能高效地记录和管理日志。 © ivwdc…...
Linux下php8安装phpredis扩展的方法
Linux下php8安装phpredis扩展的方法 下载redis扩展执行安装编辑php.ini文件重启php-fpmphpinfo 查看 下载redis扩展 前提是已经安装好redis服务了 php-redis下载地址 https://github.com/phpredis/phpredis 执行命令 git clone https://github.com/phpredis/phpredis.git执行…...
Flink运行时架构
一、系统架构 1)作业管理器(JobManager) JobManager是一个Flink集群中任务管理和调度的核心,是控制应用执行的主进程。也就是说,每个应用都应该被唯一的JobManager所控制执行。 JobManger又包含3个不同的组件。 &am…...
JupyterLab 安装以及部分相关配置
安装 JupyterLab pip install jupyter启动 JupyterLab jupyter lab [--port <指定的端口号>] [--no-browser] # --port 指定端口 # --no-browser 启动时不打开浏览器安装中文 首先安装中文包 pip install jupyterlab-language-pack-zh-CN安装完成后重启 JupyterLab 选…...
PC端实现PDF预览(支持后端返回文件流 || 返回文件URL)
一、使用插件 插件名称:vue-office/pdf 版本:2.0.2 安装插件:npm i vue-office/pdf^2.0.2 1、“vue-office/pdf”: “^2.0.2”, 2、 npm i vue-office/pdf^2.0.2 二、代码实现 // 引入组件 (在需要使用的页面中直接引入&#x…...
大模型 / 智能体在智能运维领域的应用总结与发展趋势概述
智能体 智能运维 ? 回顾大模型的发展 大模型的发展在过去两年间呈现出爆炸式的增长,成为推动人工智能领域快速进步的关键力量。 2023年3月:百度发布了其知识增强的大语言模型产品“文心一言”,这标志着国内AI大模型产业竞争的…...
uniapp 在线更新应用
在线更新应用及进度条显示 1.比较现安装手机中的apk 与线上apk的版本 getVersion(){var newVersionuni.getStorageSync("newVersion").split(".")var versionplus.runtime.version.split(".") // 获取手机安装的版本var versionNum""…...
AIGC视频生成模型:ByteDance的PixelDance模型
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍ByteDance的视频生成模型PixelDance,论文于2023年11月发布,模型上线于2024年9月,同时期上线的模型还有Seaweed&…...
python远程获取数据库中的相关数据并存储至json文件
1. conn中的5个变量的含义: ① Driver:数据库驱动程序,我使用的是SQL Server数据库。 ② Server:数据库所在的服务器地址。 ③ Database:要连接的数据库的名称。 ④ UID:登录 SQL Server 数据库的用户名…...
Kubernetes v1.28.0安装dashboard v2.6.1(k8s图形化操作界面)
准备工作 Kubernetes v1.28.0搭建教程请参考:Kubernetes v1.28.0集群快速搭建教程-CSDN博客 查看当前集群nodes都是ready状态 查看当前pods都是running状态 下载并修改配置文件 下载 recommended.yaml ,下载好之后,进入文件编辑 下载地址…...
详解三种常用标准化:Batch Norm、Layer Norm和RMSNorm
在深度学习中,标准化技术是提升模型训练速度、稳定性和性能的重要手段。本文将详细介绍三种常用的标准化方法:Batch Normalization(批量标准化)、Layer Normalization(层标准化)和 RMS Normalization&#…...
linux+docker+nacos+mysql部署
一、下载 docker pull mysql:5.7 docker pull nacos/nacos-server:v2.2.2 docker images 二、mysql部署 1、创建目录存储数据信息 mkdir ~/mysql cd ~/mysql 2、运行 MySQL 容器 docker run -id \ -p 3306:3306 \ --name mysql \ -v $PWD/conf:/etc/mysql/conf.d \ -v $PWD/…...
如何实现gitlab和jira连通
将 GitLab 和 Jira 集成起来可以实现开发任务与代码变更的联动,提高团队协作效率。以下是实现两者连通的详细步骤: 1. 确保必要条件 在进行集成之前,确保以下条件满足: 你有 GitLab 和 Jira 的管理员权限。Jira 是 Jira Cloud 或…...
利用ML.NET精准提取人名
在当今信息爆炸的时代,文本处理任务层出不穷,其中人名提取作为基础且重要的工作,广泛应用于信息检索、社交网络分析、客户关系管理等领域。随着人工智能不断进步,ML.NET作为微软推出的开源机器学习框架,为开发者提供了…...
Node.js的解释
1. Node.js 入门教程 1.1 什么是 Node.js? 1.1.1 Node.js 是什么? Node.js 是一个基于 JavaScript 的开源服务器端运行时环境,允许开发者用 JavaScript 编写服务器端代码。与传统的前端 JavaScript 主要运行在浏览器端不同,Nod…...
Macos下交叉编译安卓的paq8px压缩算法
官方没有android的编译方法,自己编写脚本在macos下交叉编译. 下载源码: git clone https://github.com/hxim/paq8px.git 稍旧的ndk并不能编译成功,需要下载最新的ndkr27c, 最后是使用clang来编译。 编译build.sh export ANDROID_NDK/Vol…...
OpenHarmony基线移植实战:从开源仓到定制仓的完整路径
1. 为什么需要移植OpenHarmony基线? 第一次接触OpenHarmony基线移植时,我也很困惑:为什么不能直接用官方开源代码?非要折腾这一套移植流程?直到在实际项目中踩了几个坑才明白,基线移植是产品开发的必经之路…...
快速掌握C#语言基础知识点(16.访问修饰符)
关注我的动态 namespace _16.访问修饰符 {internal class Program {//私有内部类,被嵌套定义,能被直接外部类访问,外部类之外无法访问private class Class_Private{//公有public int a { get; set; }//私有private int b { get; set; }//受保…...
Gemma-3-12B-IT大模型微调实战:领域适配指南
Gemma-3-12B-IT大模型微调实战:领域适配指南 1. 微调前的准备工作 微调大模型听起来很高深,其实就像教一个聪明人学习新技能。Gemma-3-12B-IT本身已经懂很多东西了,我们要做的就是让它更擅长某个特定领域。开始之前,你需要准备好…...
YOLO12模型与GitHub Actions结合:自动化测试与部署流水线
YOLO12模型与GitHub Actions结合:自动化测试与部署流水线 1. 引言 在目标检测项目的开发过程中,我们经常面临这样的挑战:每次修改代码后都需要手动运行测试、构建镜像、部署模型,这个过程既耗时又容易出错。特别是对于YOLO12这样…...
利用快马平台AI快速构建游戏cc switch功能原型,十分钟实现创意验证
利用快马平台AI快速构建游戏cc switch功能原型 最近在开发一个小型游戏项目时,遇到了一个常见需求:需要快速测试和切换各种游戏功能。比如在调试阶段,可能需要临时开启无敌模式、无限弹药等功能。传统做法是为每个功能单独写调试代码&#x…...
Vue2项目实战:集成西瓜播放器xgplayer实现企业级视频播放组件
1. 为什么选择xgplayer做企业级视频播放方案 在在线教育平台这类对视频播放要求较高的场景中,播放器的选择直接影响用户体验和开发效率。我经历过多个项目的实战验证,西瓜播放器xgplayer确实是个不错的选择。它不像某些开源播放器那样需要折腾各种兼容性…...
告别插件切换!一款满足你所有挖洞需求的浏览器插件助力高效挖洞
0x01 工具介绍 由于目前网上流通的插件功能都各有千秋,每个插件都有他自己的亮点,每次使用都得按场景去选择插件,为了能够有一款属于自己的完美插件,不用来回倒腾切换,由此GodEyes 诞生了。 它是一款可以帮助安全研究…...
华为OD生存指南:转正挑战、身份认知与职业适配
1. 华为OD转正挑战的真相 刚入职华为OD时,很多人都会被HR描述的转正路径所吸引。四步转正流程听起来清晰明了:有HC、拿绩效A、通过可信认证、工作满一年。但真正进入这个体系后,你会发现每个环节都暗藏玄机。 关于HC(Head Count…...
OpenWRT路由器如何用Zerotier实现异地组网?保姆级配置教程(含防火墙规则详解)
OpenWRT路由器通过Zerotier构建安全异地内网的完整实践指南 异地办公已成为现代企业的常态,而如何安全高效地访问公司内网资源则是技术人员面临的现实挑战。传统VPN方案往往配置复杂且性能受限,而基于P2P技术的Zerotier配合OpenWRT路由器,能够…...
PyTorch 2.8镜像部署案例:跨境电商平台商品图→营销短视频自动生成
PyTorch 2.8镜像部署案例:跨境电商平台商品图→营销短视频自动生成 1. 项目背景与价值 跨境电商平台每天需要为成千上万的商品制作营销短视频,传统方式面临三大痛点: 人力成本高:专业视频制作团队单条视频成本约300-500元生产效…...
