JWT使用

news/2024/5/19 23:43:36 标签: .netcore

1.理解

jwt只是一个加密解密工具

类似一个base64一样加密解密

只是jwt解密出来格式相对固定

jwt内容区域需要单独进行加密处理

2.网站:JSON Web Tokens - jwt.io

3.使用

引用

using Microsoft.IdentityModel.Tokens;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;

 var tokenHandle = new JwtSecurityTokenHandler(); // 实例化一个 JwtSecurityTokenHandler 对象
   var dsf= tokenHandle.CanReadToken("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6IkRFOUVDRUQ0MDg5MjRDRUYiLCJTZXJpYWxObyI6IjU0MTBlZjcwMjc2ODBhZGUxOWQ3Yjk0ZDFlMTU4MWY3MDIwNzkyNTE2NDkzNDFiNjI1NjM3NGM5MDdmOTk1Y2VjNGYxOWU1OTcyNmI0ZTVkIiwiUGhvbmUiOiIzM0RDOTBCNjc4NDYxOTNBQUYzNDVFOTFDMTY5MDQzRSIsImV4cCI6MTY1MzIwODgxMywiaXNzIjoiTGluZ2x1Lk1pY3JvLlNlcnZlciIsImF1ZCI6IkxpbmdsdS5BcHAifQ.qzgg5tWuvnYOT8zftqZl9JcsChHj5B0AajzvvZigvwc");

    var tokenKey = Encoding.ASCII.GetBytes("1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890");
    var tokenDescriptor = new SecurityTokenDescriptor
    {
        Subject = new ClaimsIdentity(new Claim[]
             {
                    new Claim(ClaimTypes.Name,"123456")
           }),//设置内容
        Expires = DateTime.UtcNow.AddHours(1),//设置有效期
        SigningCredentials = new SigningCredentials(
                new SymmetricSecurityKey(tokenKey),
                SecurityAlgorithms.HmacSha256Signature)
    };
    var token = tokenHandle.CreateToken(tokenDescriptor);
    var dddds = tokenHandle.WriteToken(token);//加密

   var dsfd= tokenHandle.ReadToken(dddds);//解密
    var dsddfd = tokenHandle.ReadJwtToken(dddds);

5.如果网站是api可以通过请求头进行拦截然后判断有效期(未实现)


http://www.niftyadmin.cn/n/515470.html

相关文章

用接口实现的一个pdo工具类

<?php //定义一个pdo工具类 class DAOPdo implements I_Dao {//配置信息private $_host;private $_root;private $_dbname;private $_pw;private $_port;private $_charset;//pdo对象private $pdo;//pdo结果集对象private $result;//被影响的记录数private $affected_row;/…

.net 6 使用MongDB数据库

1.源码 .net使用MongDB数据库-C#文档类资源-CSDN下载 2.过程 using Microsoft.AspNetCore.Mvc; using TestMongoDB.Entity; using TestMongoDB.Help;namespace TestMongoDB.Controllers {[ApiController][Route("[controller]")]public class WeatherForecastContr…

css实现鼠标移入table时出现滚动条且table内容不移位

一般是这样&#xff1a; 表格的标题和内容分别由一个table组成&#xff0c;其中表格内容的table由一个class"table-body"的div包裹.css如下 .tContainer .table-body{height:134px;overflow:hidden;} .tContainer .table-body:hover{overflow-y:auto;} 效果如下&…

WebSocket之SignalR使用

目的&#xff1a;学习 过程&#xff1a; 感觉和纯WebSocket服务器有点逻辑区别 目前还没发现更好优越性 1.官网流程ASP.NET Core SignalR 入门 | Microsoft Docs 2.项目地址ASP.NETCoreSignalR-C#文档类资源-CSDN下载 --------------------- 以前研究的纯.net后台的websocket服…

优先列队.Net PriorityQueue 使用

1.目的实现一个有优先级列队处理的线程 2.代码 消费&#xff1a; public class PriorityQueueTaskService{public static PriorityQueue<QueueDto, int> queueList new();public static async Task PriorityQueueTask(){try{_ Task.Factory.StartNew(async () >{wh…

C# .net 时间戳和时间转换 支持时区

/// <summary> /// 本时区日期时间转时间戳 /// </summary> /// <param name"datetime">时间</param> /// <param name"toMilliseconds">是否精确到毫秒</param> /// <re…

DOM Document

1.DOM Document对象 定义&#xff1a;每个载入浏览器的 HTML 文档都会成为 Document 对象。Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。 Document 对象是 Window 对象的一部分&#xff0c;可通过 window.document 属性对其进行访问。 ⑴Document对象集…

CentOS 9 镜像下载

CentOS Stream 9 镜像下载地址 https://mirrors.centos.org/mirrorlist?path/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-latest-x86_64-dvd1.iso&redirect1&protocolhttps