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

ops/2025/1/20 6:45:54/

  用户在前端页面登录成功后会从服务端获取Token,后续调用服务器的服务接口时都得带着Token,否则就会验证失败。之前使用postman测试的时候,获取Token后再调用其它服务都是人工将Token添加到Header中,网页中没法这么做,只能保存到某处,调用服务时再一并发送到服务端。
  参考文献1-5中介绍了目前常用几种客户端浏览器中保存Token的方式,包括Cookie、Web Storage、内存等方式,各有优缺点。之前没有用过Web Storage,本文学习Web Storage的基本用法。
  Web Storage包括localStorage和sessionStorage两种类型,前者存储数据后会一直存在,除非主动删除数据或者清除浏览器缓存,而后者则仅在session存在期间保存,会话结束后即被删除。关于localStorage和sessionStorage的更详细介绍请见参考文献7。
  JavaScript代码中通过window.localStorage、window.sessionStorage访问或操作数据,它们都属于键值对结构,主要属性及函数如下:
  1)length属性,获取当前保存的键值对数量;
  2)getItem函数返回指定键的值,如果键不存在,则返回null;
  3)setItem函数新增键值对或更新指定键的值;
  4)removeItem函数删除指定键的值;
  5)清空所有键值对。

  最后是一个简单的验证示例(以localStorage为例,同样适用于sessionStorage),代码及效果截图如下:

<p id="support"></p>
<hr class="layui-bg-blue">
<div>a = <input type="text" id="a" /><div class="layui-btn" id="add_a">set</div><div class="layui-btn" id="show_a">show</div>
</div>
<script>layui.use(['layer'], function () {var layer = layui.layer;var $ = layui.jquery;if (window.localStorage) {$('#support').text('Support localStorage');}else {$('#support').text('not support localStorage');}$('#add_a').on('click', function () {window.localStorage.setItem("a", $('#a').val());});$('#show_a').on('click', function () {layer.msg(window.localStorage.getItem("a"));});});
</script>

在这里插入图片描述

  为便于后续测试Token认证,还需将之前测试Cookie、Session认证的mvc项目改为WebApi,再修改之前的登录、主页等页面内容。

参考文献:
[1]https://blog.csdn.net/Andrew_Chenwq/article/details/143253009
[2]https://blog.csdn.net/Generon/article/details/72472414
[3]https://baijiahao.baidu.com/s?id=1802797209494794650&wfr=spider&for=pc
[4]https://juejin.cn/post/6922782392390746125
[5]https://blog.csdn.net/qq_42880714/article/details/134902437
[6]JavaScript网页编程从入门到精通
[7]https://blog.csdn.net/hxy771503/article/details/138280407
[8]https://html.spec.whatwg.org/multipage/webstorage.html#storage


http://www.ppmy.cn/ops/151599.html

相关文章

QT的TCP通讯

目录 一、引言 二、QT 中与 TCP 通讯相关的类 1.QTcpSocket 类 1.1 常用信号 1.2常用函数 2.QTcpServer类 2.1常用函数 三、QT TCP通信的详细代码实现 1.TCP服务器端实现 2.TCP客户端实现 四、总结 一、引言 在网络编程领域&#xff0c;TCP&#xff08;Transmission…

在VS2022中用C++连接MySQL数据库读取数据库乱码问题

1.正确安装mysql 安装之后的配置文件 2.在VS2022中进行相关配置 &#xff08;1&#xff09;右键项目&#xff0c;打开属性 注意是右键项目&#xff0c;不是.cpp文件 &#xff08;2&#xff09;配置属性-> VC目录 -> 包含目录 ->添加头文件路径&#xff08;如图&am…

Markdown学习笔记(2)

一、Markdown 代码 如果是段落上的一个函数或片段的代码可以用反引号把它包起来&#xff08;&#xff09;&#xff0c;例如&#xff1a; printf() 函数 打印出sent中每个数据包的摘要信息print(sent.summary()) 代码区块 代码区块使用 4 个空格或者一个制表符&#xff08;…

物联网在烟草行业的应用

物联网技术在烟草行业的应用 物联网技术在烟草行业的应用主要体现在以下几个方面&#xff1a; 智能制造 &#xff1a;物联网技术可以实现对生产过程中的关键参数进行实时监测&#xff0c;确保产品的质量稳定可靠。同时&#xff0c;通过对设备的远程维护和故障诊断&#xff0c;…

【MySQL】表操作

表操作 一、创建表 1、语句2、语句介绍3、注意事项4、介绍5、示例 二、查看表结构 1、语句2、介绍3、返回的信息4、示例 三、添加字段 1、语句2、语句介绍3、示例 四、修改 1、语句2、语句介绍3、示例 五、删除 1、语句2、示例 六、修改表名 1、语句2、语句介绍3、示例 七、删…

Spring Web MVC 探秘

一、生活中的Spring Web MVC 对于Spring Web MVC这个专业名称&#xff0c;很多人都不清楚这个东西是干什么的&#xff0c;其实&#xff0c;Spring Web MVC在生活中无处不在&#xff0c;我们经常会使用到它们。 假如你打开在线书店的网站&#xff0c;在首页的搜索框中输入了 “编…

HTML学习笔记(3)

一、元素种类 块级元素(标签,盒子) 特点:独占一行,对宽度高度支持内联级元素(标签,盒子) 特点:不独占一行,对宽度高度不支持内联块级元素(标签,盒子) 特点:不独占一行,对宽度高度支持弹性盒子 1.块级元素如div、p、h1~h6、ul、li等等&#xff0c;一个元素标签占一行&#xff0…

51单片机——DS18B20温度传感器

由于DS18B20数字温度传感器是单总线接口&#xff0c;所以需要使用51单片机的一个IO口模拟单总线时序与DS18B20通信&#xff0c;将检测的环境温度读取出来 1、DS18B20模块电路 传感器接口的单总线管脚接至单片机P3.7IO口上 2、DS18B20介绍 2.1 DS18B20外观实物图 管脚1为GN…