在.NET中使用JWT
1.配置文件添加
//jwt配置文件
"JWT": {
"SigningKey": "14fa5f2rrwsg627fs256fdgff2r5rf5222fsh26",
"ExpireSeconds": 3600
}
2.在Program添加中间件相关代码
builder.Services.Configure<JWTOptions>(builder.Configuration.GetSection("JWT"));
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(x =>
{
var jwtOpt = builder.Configuration.GetSection("JWT").Get<JWTOptions>();
byte[] keyBytes = Encoding.UTF8.GetBytes(jwtOpt.SigningKey);
var secKey = new SymmetricSecurityKey(keyBytes);
x.TokenValidationParameters = new()
{
ValidateIssuer = false,
ValidateAudience = false,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
IssuerSigningKey = secKey
};
});
3. 在Program中 app.UseAuthorization()前添加app.UseAuthentication();
app.UseAuthentication();
app.UseAuthorization();
4.在登录代码成功后生成token
private readonly IOptionsSnapshot<JWTOptions> _jwtOptions;
public UserController(IUserService userService, IOptionsSnapshot<JWTOptions> jwtOptions)
{
_userService = userService;
_jwtOptions = jwtOptions;
}
List<Claim> claims = new List<Claim>();
claims.Add(new Claim("UserName",user.UserName!));
claims.Add(new Claim("UserId", user.UserId.ToString()!));
string key = _jwtOptions.Value.SigningKey;
DateTime expire = DateTime.Now.AddHours(1);
Byte[] secBytes = Encoding.UTF8.GetBytes(key);
var secKey = new SymmetricSecurityKey(secBytes);
var credentials = new SigningCredentials(secKey, SecurityAlgorithms.HmacSha256Signature);
var tokenDes = new JwtSecurityToken(claims:claims,expires:expire,signingCredentials:credentials);
string JwtToken = new JwtSecurityTokenHandler().WriteToken(tokenDes);
5.验证授权只需要在接口前或者控制器加上 [Authorize]
在.NET中使用JWT的更多相关文章
- sau交流学习社区--songEagle开发系列:Vue.js + Koa.js项目中使用JWT认证
一.前言 JWT(JSON Web Token),是为了在网络环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519). JWT不是一个新鲜的东西,网上相关的介绍已经非常多了.不是很了解的 ...
- 如何在SpringBoot中集成JWT(JSON Web Token)鉴权
这篇博客主要是简单介绍了一下什么是JWT,以及如何在Spring Boot项目中使用JWT(JSON Web Token). 1.关于JWT 1.1 什么是JWT 老生常谈的开头,我们要用这样一种工具 ...
- Laravel 中使用 JWT 认证的 Restful API
Laravel 中使用 JWT 认证的 Restful API 5天前/ 678 / 3 / 更新于 3天前 在此文章中,我们将学习如何使用 JWT 身份验证在 Laravel 中构建 r ...
- 如何简单的在 ASP.NET Core 中集成 JWT 认证?
前情提要:ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统 文章超长预警(1万字以上),不想看全部实现过程的同学可以直接跳转到末尾查看成果或者一键安装相关的 nuget 包 自上一 ...
- ASP.NET Core WebAPI中使用JWT Bearer认证和授权
目录 为什么是 JWT Bearer 什么是 JWT JWT 的优缺点 在 WebAPI 中使用 JWT 认证 刷新 Token 使用授权 简单授权 基于固定角色的授权 基于策略的授权 自定义策略授权 ...
- SPA中使用jwt
什么是jwt? JSON Web Token (JWT),它是目前最流行的跨域身份验证解决方案 JWT的工作原理 1. 是在服务器身份验证之后,将生成一个JSON对象并将其发送回用户,示例如下:{&q ...
- 在SpringBoot中使用JWT
JWT简介 简介 JSON Web token简称JWT, 是用于对应用程序上的用户进行身份验证的标记.也就是说, 使用 JWTS 的应用程序不再需要保存有关其用户的 cookie 或其他sessio ...
- ASP.Net Core 3.0 中使用JWT认证
JWT认证简单介绍 关于Jwt的介绍网上很多,此处不在赘述,我们主要看看jwt的结构. JWT主要由三部分组成,如下: HEADER.PAYLOAD.SIGNATURE HEADER包 ...
- 个人博客开发系列:Vue.js + Koa.js项目中使用JWT认证
前言 JWT(JSON Web Token),是为了在网络环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519). 更多的介绍和说明,以及各种原理,我在此就不多赘诉了.JWT不是一个新鲜 ...
- .net core中使用jwt进行认证
JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间作为JSON对象安全地传输信息.由于此信息是经过数字签名的,因此可以被验证和信任 ...
随机推荐
- torch.squeeze函数解释,torch.FloatTensor()函数作用解释
1. torch.squeeze(x,N) 主要对数据维度进行压缩 torch.squeeze(x,N) #也可以写为格式 x.squeeze(dim=N) 含义:当N未给定时,去掉x中所有维度为1 ...
- PHP表单验证内容是否为空的实现代码
<!doctype html> <html> <head> <meta http-equiv="conent-type" conten ...
- 点击dgv某列的单元格时触发事件的方法
private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.Colu ...
- video.js 苹果手机设置了currentTime却还是从头播放?
最近在项目(方案大赛)中需要保存学习进度,用户再打开页面时会从上次的视频进度继续观看.我们使用了video.js,在PC浏览器和安卓手机上均可以跳转,但是苹果手机很顽固的从头开始了呢-- 后来我们在 ...
- maven的安装 仓库的种类和彼此的关系
maven的安装 maven 仓库的种类和彼此的关系 本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包, 优先从本地仓库查找 默认本地仓库位置在 ${ ...
- Mac怎么创建加密文件夹
对于一些使用Mac工作生活有特殊要求以及职业要求有限制的用户来说,加密自己的工作内容以及隐私是非常重要的一件事情.往往用户需要加密的内容项目很多,这个时候我们就需要一个加密文件夹来包含这些内容.那么M ...
- django学习:转载
https://www.cnblogs.com/ginvip/p/6894690.html https://www.cnblogs.com/yangmv/p/5327477.html https:// ...
- vue 和react 不同之我见
1数据是不是可变的 2通过js操作一切还是各自的处理方式 react的思路是all in js,通过js来生成html,所以设计了jsx,还有通过js来操作css,社区的styled-componen ...
- kafka常用命令(zookeeper与bootstrap-server)
在 0.9.0.0 之后的 Kafka,出现了几个新变动,一个是在 Server 端增加了 GroupCoordinator 这个角色,另一个较大的变动是将 topic 的 offset 信息由之前存 ...
- 学习笔记||Vue踩过的坑3.0
11.VUE之const,var,let VUE-var 用var命令声明的变量,是在全局范围内有效的 VUE-let let声明的变量,只是在当前循环的代码块中有效. let不允许在相同的作用域内重 ...