.Net 6 WebAPI 使用JWT进行 授权认证配置
.Net 6 WebAPI 使用JWT进行 授权认证
1、安装组件(Nuget)
Microsoft.AspNetCore.Authentication.JwtBearer
2、Program.cs 配置
//授权认证(使用JWT)
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(o =>
{
// 私钥
var secretByte = Encoding.UTF8.GetBytes("kdsfldsflkdslkflkdsflkdslfdslkflk");
o.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
// 验证发布者
ValidateIssuer = true,
// 发布者信息
ValidIssuer = "BeiJingBW",
// 验证接收者
ValidateAudience = true,
// 接收者
ValidAudience = "BeiJingBW",
// 验证是否过期
ValidateLifetime = true,
// 验证私钥
IssuerSigningKey = new SymmetricSecurityKey(secretByte)
};
});
// 配置Swagger
builder.Services.AddSwaggerGen(o =>
{
// 显示 授权信息
o.AddSecurityDefinition("Bearer", new Microsoft.OpenApi.Models.OpenApiSecurityScheme()
{
Description = "添加JWT授权Token:Bearer Token值",
Name = "Authorization",
In = Microsoft.OpenApi.Models.ParameterLocation.Header,
Type = Microsoft.OpenApi.Models.SecuritySchemeType.ApiKey,
BearerFormat = "JWT",
Scheme = "Bearer"
});
o.AddSecurityRequirement(new Microsoft.OpenApi.Models.OpenApiSecurityRequirement
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
}
},
new string[]
{
}
}
});
});
// 鉴权
app.UseAuthentication();
app.UseAuthorization();
3、控制器加授权认证 [Authorize],登录判定方法设置为匿名可访问 [AllowAnonymous]
[Route("api/[controller]/[action]")] // 路由配置
[ApiController]
[Authorize]
public class ECommerceController : ControllerBase
{
[HttpGet]
[AllowAnonymous]
public IActionResult Login(string? loginName, string? password)
{
// 登录判定
}
}
4、控制器中,编写生成 JWT Token 方法
///
/// 生成 JWT Token(令牌)
///
///
private string CreateTokenString()
{
//私钥
var secretByte = Encoding.UTF8.GetBytes("kdsfldsflkdslkflkdsflkdslfdslkflk");
// 非对称加密
var signingKey = new SymmetricSecurityKey(secretByte);
// 使用256 生成数字签名
var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);
// 生成Token
var token = new JwtSecurityToken(
issuer: "BeiJingBW",
audience: "BeiJingBW",
expires: DateTime.Now.AddDays(1), // 一天后过期
signingCredentials: signingCredentials
);
// 生成token 字符串
var strToken = new JwtSecurityTokenHandler().WriteToken(token);
return strToken;
}
5、登录方法中,登录成功要生成 JWT Token,返回给前端
///
/// 登录判定(可以匿名,也就是授权对它没有作业)
///
/// 登录名
/// 密码
///
[HttpGet]
[AllowAnonymous]
public IActionResult Login(string? loginName, string? password)
{
try
{
// 登录判定,登录成功
// 登录成功生成JWT Token
string strToken = this.CreateTokenString();
}
// 返回前端信息加Jwt token信息
return Ok(new
{
user = user,
token = strToken
});
}
catch (Exception ex)
{
// 错误日志
logger.LogError("登录判定出错!" + ex.Message);
throw;
}
}
6、Swagger中调试
运行登录方法,复制生成的 JWT token字符串。
点击 名上角 “Authorize” 按钮,在文本框中输入:Bearer token值,格式如:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODYyOTc3NTgsImlzcyI6IkJlaUppbmdCVyIsImF1ZCI6IkJlaUppbmdCVyJ9.hb9kZv_qj8Eosgnw6ayTf6nA2-07ym6p6xbVS237aI8,点击“Authorize”。
之后运行Swagger中的其它方法,它会自动加载 JWT token,方法正常运行。如果没有第2部,运行方法会提示无授权的错误。
7、前端Vue配置
7.1 main.js 配置
// 数据访问
import axios from 'axios'
// 添加JWT token信息
axios.defaults.headers.common["Authorization"] = "Bearer " + window.localStorage.getItem("token");
7.2 登录方法,成功登录后,写token信息到本地
methods:{
// 登录
login() {
// 登录判定
// 登录成功,写JWT的 token到本地
window.localStorage.setItem("token", res.data.token);
// 数据提交后端要加入新的Token值
this.axios.defaults.headers.common["Authorization"] =
"Bearer " + res.data.token;
}
}
.Net 6 WebAPI 使用JWT进行 授权认证配置的更多相关文章
- [转]三分钟学会.NET Core Jwt 策略授权认证
[转]三分钟学会.NET Core Jwt 策略授权认证 一.前言# 大家好我又回来了,前几天讲过一个关于Jwt的身份验证最简单的案例,但是功能还是不够强大,不适用于真正的项目,是的,在真正面对复杂而 ...
- JWT实现授权认证
目录 一. JWT是什么 二. JWT标准规范 三. 核心代码简析 四. 登录授权示例 五. JWT 使用方式 六. JWT注意事项 一. JWT是什么 JSON Web Token(JWT)是目前最 ...
- 三分钟学会.NET Core Jwt 策略授权认证
一.前言 大家好我又回来了,前几天讲过一个关于Jwt的身份验证最简单的案例,但是功能还是不够强大,不适用于真正的项目,是的,在真正面对复杂而又苛刻的客户中,我们会不知所措,就现在需要将认证授权这一块也 ...
- CZGL.Auth: ASP.NET Core Jwt角色授权快速配置库
CZGL.Auth CZGL.Auth 是一个基于 Jwt 实现的快速角色授权库,ASP.Net Core 的 Identity 默认的授权是 Cookie.而 Jwt 授权只提供了基础实现和接口,需 ...
- 重新拾取:ASP.NET Core WebApi 使用Swagger支持授权认证
园子里已经有很多.NET Core 集成Swagger的文章,但对于使用授权的介绍蛮少的. public static class SwaggerServiceExtensions { public ...
- .NetCore WebApi——基于JWT的简单身份认证与授权(Swagger)
上接:.NetCore WebApi——Swagger简单配置 任何项目都有权限这一关键部分.比如我们有许多接口.有的接口允许任何人访问,另有一些接口需要认证身份之后才可以访问:以保证重要数据不会泄露 ...
- 如何在 Net6.0 中对 WebAPI 进行 JWT 认证和授权
一.简介 我们做微服务开发,或者说做分布式开发,有一项技术我们是避不开的,那就是WebAPI,在 Net6.0中,有两类 WebAPI,一类是极简 WebAPI,它砍掉了很多冗余的东西,更纯粹的是做 ...
- Asp.NetCore3.1 WebApi 使用Jwt 授权认证使用
1:导入NuGet包 Microsoft.AspNetCore.Authentication.JwtBearer 2:配置 jwt相关信息 3:在 startUp中 public void Confi ...
- WebApi使用JWT认证(二)
这是第二部:实现NetCore上的WebApi使用JWT认证 1.NetCore新建一个WebApi的项目 2.打开AppSettings.json,添加Jwt的信息,这里为了演示而已 { " ...
- ASP.NET Core WebApi基于JWT实现接口授权验证
一.ASP.Net Core WebApi JWT课程前言 我们知道,http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再 ...
随机推荐
- [转帖]Linux的tmpfs和ramfs
tmpfs tmpfs是一种虚拟内存文件系统, 它的存储空间在VM里面,现在大多数操作系统都采用了虚拟内存管理机制, VM(Virtual Memory) 是由Linux内核里面的VM子系统管理. V ...
- [转帖]线上一个隐匿 Bug 的复盘
前言 之前负责的一个项目上线好久了,最近突然爆出一 Bug,最后评估影响范围将 Bug 升级成了故障,只因为影响的数据量有 10000 条左右,对业务方造成了一定的影响. 但因为不涉及到资金损失,Bu ...
- [转帖]Tomcat 优雅关闭之路
本文首发于 vivo互联网技术 微信公众号链接:https://mp.weixin.qq.com/s/ZqkmoAR4JEYr0x0Suoq7QQ作者:马运杰 本文通过阅读Tomcat启动和关闭流程的 ...
- Linux 安装宋体字体的简单办法
1. 今天同事说测试环境(CentOS) 打印有异常,无法将汉字正常打印出来. 2. 开发同事提供的思路是安装上宋体的字体再进行尝试,并且给出了一个解决方案的地址: https://blog.csdn ...
- Linux命令-tail命令
Linux命令-tail 命令分析 命令格式 参数 例子 Linux命令-tail 命令分析 tail命令可用于查看文件的内容,通常用来查看日志,加上-f参数就可以查看最新的日志并且不断刷新. 命令格 ...
- AIX6.1系统NTP同步配置
前言 当AIX系统的本地时间与时间服务器授出的标准时间误差大于±1000秒时.xntpd服务将无法同步时间并变得无法正常工作,请进行ntp配置前,先修改AIX系统的本地时间,尽量和时间服务器的标准 ...
- VB6的WindowsXP控件引擎 - 开源研究系列文章
这几天翻了一下原来VB6的代码,将一些有用的代码进行了整理,然后将这些代码记录下来,开源出来,让需要的朋友能够进行代码复用. 这次介绍的是一个VB6的WindowXP的控件引擎代码,主要是在程序启动的 ...
- Git企业开发控制理论和实操-从入门到深入(七)|企业级开发模型
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...
- 编译型,解释型,java
编译型:将全部程序翻译为计算机能理解执行的代码 解释型:边运行程序边翻译,解释一点运行一点 java先编译再解释,将java文件编译为class文件,class文件再通过解释器翻译给操作系统运行
- Java并发(二十三)----同步模式之保护性暂停
1.定义 即 Guarded Suspension,用在一个线程等待另一个线程的执行结果 要点 有一个结果需要从一个线程传递到另一个线程,让他们关联同一个 GuardedObject 如果有结果不断从 ...