jwt (token授权方式)

.net6的JWT的食用记录(一) .NET6的JWT使用记录 阅读详情

jwt

1.安装包

Microsoft.AspNetCore.Authentication.JwtBearer

2.startup

//JWT
 services.AddScoped<IAuthenticateService, TokenAuthenticationService>();
            services.Configure<TokenManagement>(Configuration.GetSection("tokenConfig"));

            var token = Configuration.GetSection("tokenConfig").Get<TokenManagement>();

            services.AddAuthentication(x =>
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(x =>
            {
                x.RequireHttpsMetadata = false;
                x.SaveToken = true;
                //Token Validation Parameters
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    //获取或设置要使用的Microsoft.IdentityModel.Tokens.SecurityKey用于签名验证。
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.
                    GetBytes(token.Secret)),
                    //获取或设置一个System.String,它表示将使用的有效发行者检查代币的发行者。
                    ValidIssuer = token.Issuer,
                    //获取或设置一个字符串,该字符串表示将用于检查的有效受众反对令牌的观众。
                    ValidAudience = token.Audience,
                    ValidateIssuer = false,
                    ValidateAudience = false,
                };
            });
            ///分割线
            //jwt授权
            app.UseAuthentication();//这个
            
            app.UseRouting();
            //启用跨域
            app.UseCors("cors");
            //引入wwwroot
            app.UseStaticFiles();
            //jwt
            app.UseAuthorization();//这个

app.UseAuthentication() app.UseAuthorization(); 位置固定

3.appsettings

 "tokenConfig": {
    "secret": "123456789123456789",//自行配置
    "issuer": "test.cn",
    "audience": "test",
    "accessExpiration": 30,
    "refreshExpiration": 60
  },

4.IAuthenticateService类

using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using XYZ_Order.Model;
using XYZ_Order.Services.user;

namespace XYZ_Order.Services
{
    public class LoginRequestDTO
    {
        public int? id { get; set; }
        
        public string Username { get; set; }

        public string Password { get; set; }
    }

    public interface IAuthenticateService
    {
        bool IsAuthenticated(LoginRequestDTO request,string root, out string token);
    }

    public class TokenAuthenticationService : IAuthenticateService
    {
        private readonly IUserService _userService;
        private readonly TokenManagement _tokenManagement;
        public TokenAuthenticationService(IUserService userService, IOptions<TokenManagement> tokenManagement)
        {
            _userService = userService;
            _tokenManagement = tokenManagement.Value;
        }
        public bool IsAuthenticated(LoginRequestDTO request,string root, out string token)
        {
            token = string.Empty;
            //if (!_userService.IsValid(request))
            //    return false;
            var claims = new[]
            {
                new Claim(ClaimTypes.Name,request.Username),
                new Claim(ClaimTypes.Sid,request.id.ToString()),
                new Claim(ClaimTypes.Role,root)
                //new Claim("id",request.id.ToString())
            };
            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_tokenManagement.Secret));
            var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var jwtToken = new JwtSecurityToken(_tokenManagement.Issuer, _tokenManagement.Audience, claims,
                expires: DateTime.Now.AddMinutes(_tokenManagement.AccessExpiration),
                signingCredentials: credentials);
            token = new JwtSecurityTokenHandler().WriteToken(jwtToken);
            return true;
        }
        
    }
}

控制器调用

[Authorize]

登录调用

[AllowAnonymous]

[Asp.Net Core]鉴权授权 鉴权授权 为了拦截一些操作; 传统的授权方式;session/Cookies来完成; 1.在请求某个Action之前去做校验,验证当前操作者是否登录过,登录过就有权限 2.如果没有权限就跳转到登录页中去 AOP–Filter; ActionFilter: 传统的登陆,需要匿名; .NET5鉴权授权 通过中间件来支持; 第一步:在 app.UseRouting();之后,在app.UseEndpoints()之前,增加鉴权授权; 鉴权: app.UseAuthentication();—检测用户是否登录 授权 阅读详情

相关推荐

【GAN】pytorch-CycleGAN-and-pix2pix开源项目训练自定义数据集

Github:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix 一、概念简介 图像转换:将一张图片转换为不同风格的图片,如将一张灰度图变成彩色图,素描图换成实物图。 pix2pix:需要成对的数据集,两个不同域的图像一一对应。 CycleGAN:不需要成对的数据集,只用两个不同域(domain)的图像集合X和Y,两个集合中的图像不是一一对应的。 二、训练pix2pix模型 2.1 combine_A_and_B datasets/combin

See_Star的博客 4756

NET6完整项目实战系列第5篇:用户登录番外篇--app.UseAuthentication()和app.UseAuthorization()的使用(中)

1.因为 Login.cshtml 页面是 POST 提交,所以 Login.cshtml.cs 中对应的处理方法是 OnPost( ) , 这是 net6 的规则。然后对 Login.cshtml 和 Login.cshtml.cs 文件中做少少改动,增加账号密码的非空校验,最后将登录信息写入cookie中,重新编译后运行,打开浏览器的开发人员工具查看,没有cookie消息(这里的Cookie不是login.cshtml.cs中设置的,new Claim("UserName", "张先生"),

wangxin5576的博客 843

C++ 程序稳定运行一段时间后异常中止?vc6 运行库的bug!!!

事件查看器提示:错误应用程序 xxxxxxx.exe,版本 0.0.0.0,错误模块 MSVCRTD.DLL,版本 6.0.9782.0,错误地址 0x00012b40。这是一个通信方面的软件,需要长期运行,在压力测试时,高负荷连续运行一定天数时必定崩溃,而且都是在msvcrtd.dll中崩溃。后来在dump文件中发现调用栈在是MSVCRTD.DLL模块,跟踪代码发现是在void * __cdecl _heap_alloc_dbg(        size_t nSize,        int nBloc

qingflying的专栏 2680

app.UseAuthentication() 和 app.UseAuthorization()

app.UseAuthentication() 和 app.UseAuthorization()

1967

为 ABAP BSP 与 ICF 量身打造的错误页实践:从 CX_ROOT 到 SICF 的端到端落地指南

摘要 本文系统讲解SAP ABAP平台中BSP与ICF层的错误页定制方法。在BSP层,通过标记错误页属性和绑定ERROR_OBJECT异常对象,实现友好的错误展示与日志记录。ICF层通过SICF事务码统一配置错误页、登录与登出逻辑,支持服务树继承。文章包含可直接落地的代码示例,并针对现代Fiori架构给出演进建议,帮助开发者提升用户体验与系统安全性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 227

MATLAB基础应用精讲-【数模应用】信用评分模型(附R语言和python代码实现)

信用评分模型是近年来兴起的一种为了保障银行和其他金融部门的金融安全而设立的一种关于人身金融权限的划定模型。该模型指根据客户的信用历史资料,利用一定的信用评分模型,得到不同等级的信用分数,根据客户的信用分数,来决定客户所可以持有的金额权限,从而保证还款等业务的安全性。而随着在现代社会和公司中,贷款,信用卡的作用日渐突出,信用评分模型的发展前景不可估量。信贷风险是指借款人因偿还贷款或履行合同承诺而破产而产生损失的可能性。传统上,它与贷款人无法偿还所欠利息和本金、影响现金流和增加装配成本所产生的风险有关。

qq_36130719的博客 364

NET6完整项目实战系列第4篇:用户登录番外篇--app.UseAuthentication()和app.UseAuthorization()的使用(上)

a class="nav-link text-dark" asp-area="" asp-page="/Login">登录</a>另外,在webapi出现之后,出现在各种项目中,特别是一些移动端的项目,这时候认证会混合有cookie和JWT等多种方式,在net6中,微软已经集成。的认证信息需要编码写入请求头之后再发送请求,不像浏览器,发送请求时会自动带上cookie信息,不需要编码。出现了JWT这样的认证方式,原理大同小异,相同的是, 认证信息都是保存在请求头中传递的,不同是JWT中。

wangxin5576的博客 764

杰理SDK入门教程(二):USB升级程序

开发板升级操作指南 摘要:本文介绍了开发板程序升级的两种方式(常规升级和串口升级),重点说明了常规升级的操作步骤: 拨码设置:提供4种拨码方式(不拨/1档/2档/3档),对应不同指示灯状态和按键要求 硬件连接:强制升级工具需正确连接电脑和开发板(注意USB接口方向) 升级流程:根据拨码状态操作按键,观察指示灯变化(红灯常亮绿灯灭表示进入升级模式) 执行升级:运行SDK中的download.bat完成升级 文中还包含拨码开关说明、指示灯状态对照表以及升级原理说明,帮助用户理解升级过程。升级成功后在设备管理器可

qq_42014563的博客 1119

关于学习Token、JWT、Cookie等验证授权方式的总结

本文主要介绍Cookie、JWT、ThreadLocal等知识点。

qq_63218110的博客 2333

手把手教你学Simulink实例:基于Simulink的超级电容器充放电仿真

超级电容器(Supercapacitor)是一种高容量电容器,具有快速充放电能力、长寿命和高功率密度等优点。它在能量存储系统、电动汽车、不间断电源(UPS)等领域有广泛应用。为了更好地理解和设计超级电容器的应用系统,通常需要进行详细的仿真分析。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证超级电容器充放电系统的控制策略。本教程将详细介绍如何使用 Simulink 进行超级电容器充放电的仿真实例。通过本教程,我们详细介绍了如何使用 Simulink 进行超级电容器充放电的仿真实例。

MHD0815的博客 581

从源码编译CesiumForUnreal

从源码编译CesiumForUnreal插件

专注GIS开发 5644

渗透测试-关于学习Token、JWT、Cookie等验证授权方式的总结

渗透测试过-关于学习Token、JWT、Cookie等验证授权方式的总结

lza20001103的博客 575

YOLOv8改进策略【卷积层】| TIP 2025 MFA 多阶段特征聚合 大核扩感受 + 多梯度融合,强效增强弱小目标特征

红外弱小目标尺寸极小、信噪比低,在特征传递中极易丢失信息;常规卷积感受野单一、梯度源不足,难以同时捕捉局部细节与全局上下文,导致小目标特征表达弱、检测漏检。因此提出多阶段特征聚合 MFA,用大核卷积+多分支+通道注意力强化小目标特征提取。

Limiiiing的博客 59

Cookie,Session,Token,JWT授权方式对比

HTTP 本质上是无状态的,每个请求都是互相独立、毫无关联的,协议不要求客户端或服务器记录请求相关的信息。服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪,就主动的去维护了一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器,而这个状态需要通过 cookie 和 session 去实现。JWT验证客户端发来的token信息就不用, 在服务端使用密钥校验就可以,不用数据的查询。

Carroll的博客 1383

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于JWT(Json Web Token)的授权方式

JWT 是JSON风格轻量级的授权和身份认证规范,可实现无状态、分布式的Web应用授权; 从客户端请求服务器获取token, 用该token 去访问实现了jwt认证的web服务器。 token 可保存自定义信息,如用户基本信息, web服务器用key去解析token,就获取到请求用户的信息了; 很方便解决跨域授权的问题,因为跨域无法共享cookie,.net平台集成的 FormAu

AI架构师-CJF 2757

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

授权认证登录之 Cookie、Session、Token、JWT详解

授权认证登录之 Cookie、Session、Token、JWT 详解

qq_20236937的博客 2723

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

基于JWT(Json Web Token)的ASP.NET Web API授权方式

token应用流程 初次登录:用户初次登录,输入用户名密码 密码验证:服务器从数据库取出用户名和密码进行验证 生成JWT:服务器端验证通过,根据从数据库返回的信息,以及预设规则,生成JWT 返还JWT:服务器的HTTP RESPONSE中将JWT返还 带JWT的请求:以后客户端发起请求,HTTP REQUEST HEADER中的Authorizatio字段都要有值,为JWT Insta...

weixin_30329623的博客 261

.NET 6.0 WebAPI 使用JWT生成Token的验证授权

4.相关配置结束后,我们得生成Token,这时我们创建一个专门生成Token的类里面有两个生成Token的方法,想用哪个用哪个。6.既然可以生成Token了,那么就该给控制器授权了,总不能让每个携带Token的用户能访问系统所以的API吧,那样会出现垂直越权的情况,渗透测试过不了哦。2.配置文件appsettings.json写相关配置参数(也可不写,写在程序里面,数据库读取也是一样的)此处着重说Policy方式,对Role方法感兴趣的可以看我前面的Cookie方式验证。3.在Program配置相关服务。

qq_44217121的博客 1718

JWT授权为啥要在 Authorization标头里加个Bearer 呢

JWT授权为啥要在 Authorization标头里加个Bearer 呢

Java__EE小白成长之路 1万+

一文读懂Cookie、Session、Token和JWT(建议收藏)

点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐]什么是认证(Authentication)什么是授权(Authorization)什么是凭证(Credentials)什么是 ...

全栈开发者社区 1870

Cookie、Session、Token、JWT

HTTP 是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息):每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行 会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现。

Null的博客 1359

Cookie、Session、Token、JWT详解

Cookie、Session、Token、JWT

【可全包】本人程序员,不需要做任何吹嘘,只是实在写点程序,写点文档,熟悉各类主流框架,SSM,SpringBoot,Flask,Djiango,Mysql,Sqlite,VUE,Uniapp等,各类程序设计专家,优质作者 1157

JWT与授权的几种方式对比

JWT(JSON Web Token)是目前最流行的跨域认证解决方案,是为了网络应用环境之间传递声明而执行的基于JSON的开发标准,该token被设计为紧密安全的,特别适用于分布式站点的单点登录场景。jwt的声明一般用来在身份提供者和服务提供者之间传递被认证的用户信息,以便从服务器获取到资源。该token可以被用来做认证和加密。

Daisy_G_Jasmine的博客 958

认证与授权之Cookie、Session、Token、JWT

进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条等,下边拿微信来举例子说明认证相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信,进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条等,下边拿微信来举例子说明认证相关的基本概念,在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信,输入账号和密码登录微信的操作就是认证(此处说法可能不太严谨,登录操作除了认证可能也会涉及到授权,如果所有资源都对外开放,那么就没有授权一说)

BASK2312的博客 1197
上一篇: .net core 3.1 npoi导出excel文档
下一篇: WebAPI 开启静态网页,设置主页
chafferer_
博客等级 码龄9年 0粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值