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

jwt 验证方法 (ASP.NET Core)

一、安装包

  <ItemGroup><PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.18" /></ItemGroup>

二、实现,生成secretKey和jwtToken,可以在线生成

JWT在线解码/编码工具 - 解析、验证、生成JSON Web Token

Program.cs


using System.Security.Claims;var secretKey = "50nZpLVvKQ1WYkhSCTiO3LvdCr0G8hcaQF4pUIkOJNfvBFiMKvI4zXnWTPkDsel7QH3vtfF224kKFe84IFalDQ==";
var jwtToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNzUzNDUwMDMwLCJuYmYiOjE3NTM0NTAwMzAsImV4cCI6MTc1MzQ1MzYzMH0.tCkEzCh6N6XU9_YQ7manDo3zr2_Xz3wIWNfYqqKdDQI";var validator = new JwtValidator(secretKey);
var principal = validator.ValidateToken(jwtToken);if (principal != null)
{Console.WriteLine("Token is valid!");Console.WriteLine($"Subject: {principal.FindFirst(ClaimTypes.NameIdentifier)?.Value}");Console.WriteLine($"Name: {principal.FindFirst(ClaimTypes.Name)?.Value}");
}
else
{Console.WriteLine("Token is invalid!");
}

添加类:JwtValidator.cs

using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;public class JwtValidator
{private readonly string _secretKey;private readonly string _issuer;private readonly string _audience;public JwtValidator(string secretKey, string issuer = null, string audience = null){_secretKey = secretKey;_issuer = issuer;_audience = audience;}public ClaimsPrincipal ValidateToken(string token){try{var tokenHandler = new JwtSecurityTokenHandler();var key = Encoding.ASCII.GetBytes(_secretKey);var validationParameters = new TokenValidationParameters{ValidateIssuerSigningKey = true,IssuerSigningKey = new SymmetricSecurityKey(key),ValidateIssuer = !string.IsNullOrEmpty(_issuer),ValidIssuer = _issuer,ValidateAudience = !string.IsNullOrEmpty(_audience),ValidAudience = _audience,ValidateLifetime = true,ClockSkew = TimeSpan.Zero};SecurityToken validatedToken;return tokenHandler.ValidateToken(token, validationParameters, out validatedToken);}catch (SecurityTokenException ex){// Token 验证失败Console.WriteLine($"Token validation failed: {ex.Message}");return null;}catch (Exception ex){// 其他异常Console.WriteLine($"Error validating token: {ex.Message}");return null;}}}

http://www.lryc.cn/news/599209.html

相关文章:

  • Uniapp编写微信小程序,绘制动态圆环进度条
  • Linux——线程(下)
  • uniapp小程序上传图片并压缩
  • 【MacOS】发展历程
  • 基于 Nginx 与未来之窗防火墙构建下一代自建动态网络防护体系​—仙盟创梦IDE
  • 好看的小程序推广单页HTML源码 可用作导航页
  • 校园二手交易小程序的设计与实现
  • 如何将荣耀手机的照片传输到 Mac
  • 小程序安卓ApK转aab文件详情教程MacM4环境
  • Linux 时间同步的流程
  • 小程序卡顿到丝滑体验:ZKmall开源商城性能优化与兼容修复实战指南
  • 教培机构如何开发自己的证件照拍照采集小程序
  • 【pybind11】 pybind11如何调用python
  • 《整合Spring Cache:本地缓存、Redis与Caffeine对比实践》
  • Python 数据可视化之 Matplotlib 库
  • 【国内电子数据取证厂商龙信科技】谁是躲在“向日葵”后的
  • OSPF之多区域
  • 【ResNet50图像分类部署至RK3588】模型训练→转换RKNN→开发板部署
  • Jmeter的元件使用介绍:(四)前置处理器详解
  • JMeter每次压测前清除全部以确保异常率准确(以黑马点评为例、详细图解)
  • Pytorch中register_buffer和torch.nn.Parameter的异同
  • npm init vite-app runoob-vue3-test2 ,npm init vue@latest,指令区别
  • LIMA:大语言模型对齐的“少即是多”革命——原理、实验与范式重构
  • VR 技术在污水处理领域的创新性应用探索​
  • 华为云DRS实现Oracle到GaussDB数据库迁移的全流程技术方案
  • GTSuite许可与网络安全
  • Android Studio 自带的官方模拟器,ABI这一列是x86_64,xABI这一列是arm64-v8a
  • Apache Ranger 权限管理
  • Android Studio 2024 内嵌 Unity 3D 开发示例
  • Android studio自带的Android模拟器都是x86架构的吗,需要把arm架构的app翻译成x86指令?