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

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证7)

  本文验证基于请求头中传递token信息的认证方式,webapi项目的控制器类中新建如下函数,仅通过验证的客户端能调用,需要客户端请求在Header中添加’Authorization’: 'Bearer token’的键值对且通过token验证后才能调用。

[Authorize]
[HttpGet]
public async Task<ApiResult> DataTest(string userName)
{ApiResult result = new ApiResult();            result.Msg = "Hello,"+userName;return result;
}

  新增main.html页面,登录页面登录成功后通过设置window.location.href属性跳转到main.html页面,后者中主要功能包括:
  1)从本地sessionStorage中读取并显示当前用户名;
  2)点击按钮能够查看本地token数据(也是从sessionStorage中读取);
  3)目前没看到太好的“”退出登录”方式,就加了个退出按钮,点击后删除sessionStorage的数据,并跳转回登录页面;
  4)输入一段文字,点击“调用服务”按钮,调用后台的DataTest函数并显示返回结果。

  main.html页面的主要js代码如下:

layui.use(['layer', 'form'], function () {var layer = layui.layer;            $ = layui.jquery;$(".userName").html(sessionStorage.getItem("user"));    $("#viewToken").click(function () {layer.msg("当前用户Token为:" + sessionStorage.getItem("token"));});$("#quit").click(function () {layer.confirm('确定要退出吗?', function(index){//用户点击了确认按钮layer.close(index);sessionStorage.removeItem("user");sessionStorage.removeItem("token");window.location.href = "./login.html";}, function(index){//用户点击了取消按钮layer.close(index);});});$("#invokeSrv").click(function () {var urlAddress='https://localhost:7051/Login/DataTest?userName='+$("#inputText").val();$.ajax({type: 'GET',url: urlAddress,  headers: {'Authorization': 'Bearer '+sessionStorage.getItem("token"),  // 自定义的授权头部字段'Content-Type': 'application/json' },                                     success: function (result) {                        if (result.statusCode == 200) {layer.msg(result.msg);}else{layer.msg("调用失败,错误消息为:" + result.msg);}                        },error: function () {layer.msg("调用失败");                        }});});});      

  最后是程序运行效果截图(界面比较丑,没怎么处理,主要是验证功能),
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  如果不登录直接访问main.html,则点击调用服务会因身份验证不通过而调用失败。
在这里插入图片描述

参考文献:
[1]https://www.jianshu.com/p/a2804e72d296
[2]https://blog.csdn.net/sD7O95O/article/details/85043160
[3]https://www.cnblogs.com/qiongkangle/p/13347283.html
[4]https://www.cnblogs.com/xbhp/p/17401507.html
[5]https://www.cnblogs.com/superstar/p/16491428.html
[6]https://blog.csdn.net/weixin_44877917/article/details/140609294
[7]https://blog.csdn.net/qq_40287041/article/details/143368882

相关文章:

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证7)

本文验证基于请求头中传递token信息的认证方式&#xff0c;webapi项目的控制器类中新建如下函数&#xff0c;仅通过验证的客户端能调用&#xff0c;需要客户端请求在Header中添加’Authorization’: Bearer token’的键值对且通过token验证后才能调用。 [Authorize] [HttpGet]…...

Ubuntu16.04 安装OpenCV4.5.4 避坑

Ubuntu16.04 安装C版OpenCV4.5.4 Ubuntu16.04 VSCode下cmakeclanglldb调试c 文章目录 Ubuntu16.04 安装C版OpenCV4.5.41. 下载Opencv压缩包2. 安装Opencv-4.5.43. 配置OpenCV的编译环境4.测试是否安装成功 1. 下载Opencv压缩包 下载Opencv压缩包&#xff0c;选择source版本。…...

DDD - 整洁架构_解决技术设计困局

文章目录 Pre如何落地 DDD底层技术的更迭 整洁架构的设计主动适配器/北向适配器被动适配器/南向适配器 整洁架构的落地总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服务、实体与值对象的两种设计思路…...

Python自动化运维:一键掌控服务器的高效之道

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在互联网和云计算高速发展的今天,服务器数量的指数增长使得手动运维和管理变得异常繁琐。Python凭借其强大的可读性和丰富的生态系统,成为…...

数论问题61一一各种进位制

10进位制是普遍使用的数进位制&#xff0c;二进位制是计算机采用的进位制。还有三进位制&#xff0c;四进位制&#xff0c;…等等。那一种进位制都能转化为10进位制。下面介绍这种方法。 ①10进位制的表示(口诀:逢10进1) 如8X10007X1005x1038753。 ②2进位制的表示(口诀:逢2…...

Java开发提速秘籍:巧用Apache Commons Lang工具库

一、Java 开发效率之困 在当今数字化时代&#xff0c;Java 作为一门广泛应用的编程语言&#xff0c;在各类软件开发项目中占据着举足轻重的地位。无论是大型企业级应用、互联网平台&#xff0c;还是移动应用后端&#xff0c;都能看到 Java 的身影。然而&#xff0c;Java 开发者…...

使用sql查询excel内容

1. 简介 我们在前面的文章中提到了calcite支持csv和json文件的数据源适配, 其实就是将文件解析成表然后以文件夹为schema, 然后将生成的schema注册到RootSehema(RootSchema是所有数据源schema的parent&#xff0c;多个不同数据源schema可以挂在同一个RootSchema下)下, 最终使用…...

[Python学习日记-78] 基于 TCP 的 socket 开发项目 —— 模拟 SSH 远程执行命令

[Python学习日记-78] 基于 TCP 的 socket 开发项目 —— 模拟 SSH 远程执行命令 简介 项目分析 如何执行系统命令并拿到结果 代码实现 简介 在Python学习日记-77中我们介绍了 socket 基于 TCP 和基于 UDP 的套接字&#xff0c;还实现了服务器端和客户端的通信&#xff0c;本…...

电子应用设计方案101:智能家庭AI喝水杯系统设计

智能家庭 AI 喝水杯系统设计 一、引言 智能家庭 AI 喝水杯系统旨在为用户提供个性化的饮水提醒和健康管理服务&#xff0c;帮助用户养成良好的饮水习惯。 二、系统概述 1. 系统目标 - 精确监测饮水量和饮水频率。 - 根据用户的身体状况和活动量&#xff0c;智能制定饮水计划。…...

vue学习路线

以下是一个详细的Vue学习路线&#xff1a; 一、基础入门 &#xff08;一&#xff09;环境搭建 1. 安装Node.js和npm&#xff1a;Vue项目依赖于Node.js环境&#xff0c;需从官网下载并安装最新版本的Node.js&#xff0c;npm会随Node.js一起安装。 2. 安装Vue CLI&#xff1a;V…...

(15)Chainlink Automation(定时任务) 详细介绍及用法

Chainlink Automation 详细介绍 1. 什么是 Chainlink Automation&#xff1f; Chainlink Automation 是 Chainlink 提供的一个去中心化服务&#xff0c;专门用于自动化执行智能合约的链上操作。它允许开发者基于时间或特定条件&#xff08;如链上或链下事件&#xff09;触发智…...

从入门到精通:RabbitMQ的深度探索与实战应用

目录 一、RabbitMQ 初相识 二、基础概念速览 &#xff08;一&#xff09;消息队列是什么 &#xff08;二&#xff09;RabbitMQ 核心组件 三、RabbitMQ 基本使用 &#xff08;一&#xff09;安装与环境搭建 &#xff08;二&#xff09;简单示例 &#xff08;三&#xff09;…...

基于微信小程序高校订餐系统的设计与开发ssm+论文源码调试讲解

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的&#xff0c;在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值&#xff0c;吸引更多的访问者访问系统&#xff0c;以及让来访用户可以花费更多时间停留在系统上&#xff0c;则表明该系统设计得比较专…...

【vitePress】基于github快速添加评论功能(giscus)

一.添加评论插件 使用giscus来做vitepress 的评论模块&#xff0c;使用也非常的简单&#xff0c;具体可以参考&#xff1a;giscus 文档&#xff0c;首先安装giscus npm i giscus/vue 二.giscus操作 打开giscus 文档&#xff0c;如下图所示&#xff0c;填入你的 github 用户…...

PID 控制算法(二):C 语言实现与应用

在本文中&#xff0c;我们将用 C 语言实现一个简单的 PID 控制器&#xff0c;并通过一个示例来演示如何使用 PID 控制算法来调整系统的状态&#xff08;如温度、速度等&#xff09;。同时&#xff0c;我们也会解释每个控制参数如何影响系统的表现。 什么是 PID 控制器&#xf…...

Git本地搭建

Git本地搭建 &#xff08;项目突然不给创建仓库了&#xff0c;为了方便管理项目只能自己本地搭建git服务&#xff09; 为了在本地搭建Git环境并实现基本的Git操作&#xff0c;步骤如下&#xff1a; 安装Git软件 ‌Windows‌&#xff1a;从Git官方网站下载并安装适用于Windows…...

ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果

前言 ORB-SLAM2源码学习&#xff1a;Initializer.cc⑦: Initializer::Triangulate特征点对的三角化_cv::svd::compute-CSDN博客 经过上面的三角化我们成功得到了三维点&#xff0c;但是经过三角化成功的三维点并不一定是有效的&#xff0c;需要筛选才能作为初始化地图点。 …...

leetcode 2239. 找到最接近 0 的数字

题目&#xff1a;2239. 找到最接近 0 的数字 - 力扣&#xff08;LeetCode&#xff09; 加班用手机刷水题&#xff0c;补个记录 1 class Solution { public:int findClosestNumber(vector<int>& nums) {int ret nums[0];for (int i 1; i < nums.size(); i) {if…...

Rust实现内网穿透工具:从原理到实现

目录 1.前言2.内网穿透原理3.丐版实现3.1 share3.2 server3.3 client3.4 测试4.项目优化4.1 工作空间4.2 代码合并4.3 无锁优化4.4 数据分离4.5 错误处理4.6 测试代码4.7 参数解析本篇原文为:Rust实现内网穿透工具:从原理到实现 更多C++进阶、rust、python、逆向等等教程,可…...

【深度学习】1.深度学习解决问题与应用领域

深度学习要解决的问题 一、图像识别相关问题 物体识别 背景和意义&#xff1a;在众多的图像中识别出特定的物体&#xff0c;例如在安防监控领域&#xff0c;识别出画面中的人物、车辆等物体类别。在自动驾驶技术中&#xff0c;车辆需要识别出道路上的行人、交通标志、其他车辆…...

终极指南:3步快速诊断Windows热键冲突的免费侦探工具

终极指南&#xff1a;3步快速诊断Windows热键冲突的免费侦探工具 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经…...

别再手写 CRUD 了!DeepSeek + 速达荣耀,AI 一把生成整套 ERP 前后端

还在日复一日写 ERP 表单、列表、分页、审核逻辑&#xff1f;同样的单据结构、同样的状态流转、同样的权限校验&#xff0c;手写一遍又一遍。今天直接上实战&#xff1a;DeepSeek AI 编程 速达荣耀开源架构自然语言一句话&#xff0c;自动生成 Vue3 前端 Java 后端整套代码&a…...

用快马平台十分钟复刻lostlife:快速构建你的首个交互式游戏原型

最近想尝试做个简单的交互式游戏原型&#xff0c;正好看到InsCode(快马)平台可以快速生成项目代码&#xff0c;就试了试复刻类似lostlife的玩法。整个过程比想象中顺利&#xff0c;分享下我的实现思路&#xff1a; 确定核心交互逻辑 游戏的核心是点击角色触发反馈&#xff0c;所…...

Docker部署AnythingLLM踩坑记:解决SQLite数据库文件无法打开的权限问题

Docker部署AnythingLLM权限问题深度解析&#xff1a;从SQLite报错到容器用户管理实践 部署AnythingLLM时遇到SQLite unable to open database file错误&#xff1f;这背后隐藏着Docker容器用户权限管理的核心知识。本文将带你从表面错误深入到容器用户权限体系的本质&#xff0…...

原神智能辅助工具BetterGI:三维价值框架下的游戏效率提升方案

原神智能辅助工具BetterGI&#xff1a;三维价值框架下的游戏效率提升方案 【免费下载链接】better-genshin-impact &#x1f4e6;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音…...

GCC/Clang编译警告终极配置:用-Wall -Wextra提升代码质量的3个冷技巧

GCC/Clang编译警告终极配置&#xff1a;用-Wall -Wextra提升代码质量的3个冷技巧 在C/C开发中&#xff0c;编译警告常被视为"可以忽略的噪音"&#xff0c;但经验丰富的开发者知道&#xff0c;这些警告往往是代码质量的早期预警系统。当你在深夜调试一个难以复现的内存…...

从理论到实践:基于MATLAB的ZF、ML、MRC与MMSE信号检测算法性能深度剖析

1. 信号检测算法入门&#xff1a;从通信系统到MATLAB实现 第一次接触信号检测算法时&#xff0c;我被各种缩写搞得晕头转向。直到在MIMO系统项目中真正用MATLAB实现了这些算法&#xff0c;才明白它们就像不同的"翻译官"&#xff0c;负责把混乱的接收信号还原成原始信…...

SE110 0608830109伺服控制器

SE110 0608830109 伺服控制器简介SE110 0608830109 是工业自动化系统中的伺服控制器模块主要用于驱动和控制伺服电机&#xff0c;实现精确运动控制支持闭环控制&#xff0c;确保位置、速度和加速度精度内置高速处理器&#xff0c;可快速响应控制指令提供多种控制模式&#xff0…...

2026年4月OpenClaw部署方法:本地服务器部署OpenClaw、配置百炼APIKey、集成Skill详细教程

2026年4月OpenClaw部署方法&#xff1a;本地服务器部署OpenClaw、配置百炼APIKey、集成Skill详细教程。OpenClaw&#xff08;原Clawdbot&#xff09;作为2026年主流的AI自动化助理平台&#xff0c;可通过阿里云轻量服务器实现724小时稳定运行&#xff0c;并快速接入钉钉&#x…...

SwiftData中的级联删除关系

在开发iOS应用程序时,数据模型的设计和管理至关重要。SwiftData是Apple在WWDC 2023上推出的新框架,旨在简化数据模型的创建和操作。今天,我们来探讨一下如何在SwiftData中实现级联删除关系。 什么是级联删除? 级联删除是一种数据库关系模型中的操作规则,当一个主记录被删…...