.net core 3.1JWT用户权限认证(二)获取token
.net core 3.1JWT用户权限认证(二)获取token
直接上案列
引入程序集
第二步 建立token接口,和token实现类
public interface IJwtTokenService{//获取token的方法public string GetToken();}
public class JwtTokenService : IJwtTokenService{private readonly IConfiguration _configuration;public JwtTokenService(IConfiguration configuration){_configuration = configuration;//获取appsetting专用IConfiguration}/// <summary>/// 获取token的方法/// </summary>/// <returns></returns>public string GetToken(){//创建jwt 三个部分 header,payload,signiture//header:var signingAlgorithm = SecurityAlgorithms.HmacSha256;//256加密格式//payload: 可以加很多东西,自定义的都可以 这里用claimvar claims = new[] {new Claim(JwtRegisteredClaimNames.Sub,"11111111") //键值对的形式 };//signiture//获取配置文件的私钥var secretByte = Encoding.UTF8.GetBytes(_configuration["Authentication:SecretKey"]);//加密私钥var signingKey = new SymmetricSecurityKey(secretByte);//验证私钥var signingCredentials = new SigningCredentials(signingKey, signingAlgorithm);//产生tokenvar token = new JwtSecurityToken(issuer: _configuration["Authentication:Issuer"],audience: _configuration["Authentication:Audience"],claims,notBefore: DateTime.UtcNow,//发布时间expires: DateTime.UtcNow.AddMinutes(2),//过期时间,这里是2分钟signingCredentials//防伪标志);//输出tokenvar tokenStr = new JwtSecurityTokenHandler().WriteToken(token);return tokenStr;}}
配置文件内容
"Authentication": {"SecretKey": "123456789qwertyuiop","Issuer": "qwertyuiop","Audience": "qwertyuiop"}
最后把服务注册到自带的IServiceCollection中
services.AddScoped<IJwtTokenService, JwtTokenService>();
填坑
错误信息:System.ArgumentOutOfRangeException:“IDX10603: Decryption failed. Keys tried: ‘[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]’.
Exceptions caught:
‘[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]’.
token: ‘[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII.]’ ”
讲道理这个错误信息真的看不懂
为了让错误信息更加的简单明了我们在startup文件中的Configure
中增加
IdentityModelEventSource.ShowPII = true;
再次运行错误信息就变成了
System.ArgumentOutOfRangeException:“IDX10603: Decryption failed. Keys tried: ‘HS256’.
Exceptions caught:
‘128’.
token: ‘96’ ”
问题原因就是:在设置配置文件SecretKey中的值的时候给的太短了,官方要求必须大于等于16个字符
再次运行 成功获取到token
可以把获取刀的token拿到jwt官网去解析。这里就不做了
.net core 3.1JWT用户权限认证(二)获取token相关推荐
- Django+Vue,前后端分离,实现用户权限认证
网上教程一大堆,要么思路不够清晰,要么给你扔一大段代码,只有几行注释.... 看了我这个,你奶奶来都能实现前后端分离用户权限认证! Django 采用token认证方式,使用 rest_framewo ...
- Java权限管理|基于springBoot+springSecurity+jwt实现前后端分离用户权限认证
基于springBoot+springSecurity+jwt实现前后端分离用户权限认证 1. 项目说明 主要基于前后端分离情况下用户权限认证, 当用户登录认证成功后,每个用户会获取到自己的tok ...
- ABP VNext认证授权获取Token
ABP VNext认证授权获取Token 1.Password授权方式获取 1.1 请求说明 1.2 请求示例 1.3 请求参数 2.authorization_code模式获取 2.1 无认证授权, ...
- 微服务之间单点登录和用户权限认证的实现
目录 单系统登录机制 HTTP无状态协议 Cookie会话机制 登录状态 多系统登录难点 单点登录系统 单点登录流程 单点注销流程 部署图 子系统与sso认证中心的功能 准备工作 项目结构 修改网关配 ...
- 基于 Spring Security 搭建用户权限系统(二) - 自定义配置
说明 本文的目的是如何基于 Spring Security 去扩展实现一个基本的用户权限模块, 内容会覆盖到 Spring Security 常用的配置. 文中涉及到的业务代码是不完善的, 甚至会存在 ...
- 探索Hive用户权限(二):HiveServer2安全访问Hive
目录 前言 一.提出问题:beeline登录后没有认证 二.hiveServer2的身份认证 1.自定义hiveServer2身份认证 2.测试一下 三.hive.server2.enable.doA ...
- 若依微服务版怎样修改Nacos中配置文件使Url不受权限认证跳过Token验证
场景 若依微服务版手把手教你本地搭建环境并运行前后端项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/109363303 在上 ...
- 怎么获取计算机用户权限,Windows7怎么获取administrator权限?
在平时的工作中,我们偶尔会删除一些文件,但是发现系统提示没有权限,于是这时候我们就必须获取administrator权限了,但是很多用户不知道Windows7怎么获取administrator权限,为 ...
- 计算机超级用户权限,win7系统获取超级用户权限的方法(图文)
电脑安装上win7操作系统后,都会建立管理员账户,这样能够保护电脑安全.在win7专业版系统中修改和删除一些文件需要获取管理器权限,获取到用户权限,但是其中还有一个超级的用户权限,那么win7系统怎么 ...
最新文章
- 作价20亿美元!英特尔收购以色列AI芯片公司Habana Labs
- 一份超详细的 Java 问题排查工具单
- boost::sort模块实现spreadsort 64 位整数排序示例
- openshift安装_云幸福–如何在几分钟内安装新的OpenShift Container Platform 3.7
- Cake -- ACM解决方法
- pandas之DataFrame合并merge
- 天气预报Dom解析(转)
- wpf 控件生成图片_EyeshotCAD控件生成以及作用
- 常见开源协议大白话说明
- lambda 复制数组
- (26)VHDL实现或(数据流描述)
- 谈谈JavaScript中的function constructor和new关键字
- SAStruts中文文档
- tecplot360的宏命令
- OpenXR+Runtime:OpenXR SDK Source Code源码编译
- 非参数统计——第二章 单样本问题
- 生成条形码(jsbarcode、vue-barcode)
- linux那些事之page fault(do_fault)(5)
- 关于linux中limits的一些总结
- win2012 r2/win2016修改域密码复杂度策略