token验证失败_ASP.NET CORE WEBAPI JWT 带BEARER的TOKEN
JWT主要由三部分构成,header、 payload 、signature,下面给出详细的TOKEN生成及使用代码。
1、注册JWT服务
public void ConfigureServices(IServiceCollection services)
{
//注册JWT
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(opt => {
opt.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = JwtClaimTypes.Name,
RoleClaimType = JwtClaimTypes.Role,
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidAudience = Configuration["JWT:Audience"],
ValidIssuer = Configuration["JWT:Issuer"],
//ClockSkew = TimeSpan.FromSeconds(300), //时间偏移量
ClockSkew = TimeSpan.Zero,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(Configuration["JWT:SecurityKey"]))
};
});
}
2、配置JWT,启用认证
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//启用验证
app.UseAuthorization();
}
3、配置appsettings.json
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"JWT": {
"SecurityKey": "fcf6dc95-6ba4-48ff-b584-a10fd61a054b",
"Issuer": "robinxu",
"Audience": "robinxu"
},
"AllowedHosts": "*"
}
4、服务端生成Token
///
/// 生成Token
///
///
///
[AllowAnonymous]
[HttpPost]
[Route("Token")]
public IActionResult Token([FromBody]TokenRequest request)
{
if (request.userName == "robin" && request.password == "666666")
{
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
new Claim("name", request.userName)
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWT:SecurityKey"]));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256Signature);
var token = new JwtSecurityToken(
issuer: _configuration["JWT:Issuer"],
audience: _configuration["JWT:Audience"],
claims: claims,
notBefore: DateTime.Now,
expires: DateTime.Now.AddMinutes(30),
signingCredentials: creds);
return Ok(new
{
token = new JwtSecurityTokenHandler().WriteToken(token),
date = DateTime.Now.ToString()
});
}
else
{
return BadRequest("账号或密码验证失败");
}
}
public class TokenRequest
{
public string userName { get; set; }
public string password { get; set; }
}
5、获取Token
请求:
{
"userName":"robin",
"password":"666666"
}
响应:
{
"token": "eyJhbGciOiJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNobWFjLXNoYTI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmZTczM2EyZC00MDYyLTRhOGEtOTNhZC00YThkMjliNDQyN2EiLCJuYW1lIjoicm9iaW4iLCJuYmYiOjE1ODE2ODEyMjQsImV4cCI6MTU4MTY4MzAyNCwiaXNzIjoieHVndW9odWkiLCJhdWQiOiJ4dWd1b2h1aSJ9.ttxs3NnZ3fTTvvcMymhpMPBTgP61oQuqc-klVwCYuoY",
"date": "2020/2/14 19:53:45"
}
6、验证Token请求地址
//
/// 测试
///
///
[HttpGet]
[Route("Test")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public string Test()
{
return Guid.NewGuid().ToString();
}
7、验证Token请求图示
swagger验证token请求示例图
postman验证token请求示例图
token验证失败_ASP.NET CORE WEBAPI JWT 带BEARER的TOKEN相关推荐
- java微信公众号开发token验证失败的问题及解决办法
java微信公众号开发token验证失败的问题及解决办法 参考文章: (1)java微信公众号开发token验证失败的问题及解决办法 (2)https://www.cnblogs.com/beardu ...
- 微信token验证失败的解决方法
微信token验证失败的解决方法 参考文章: (1)微信token验证失败的解决方法 (2)https://www.cnblogs.com/kenshinobiy/p/5433705.html 备忘一 ...
- 关于TP框架的微信开发服务器配置TOKEN验证失败解决方案
首先得确定一下服务器配置的参数有没有写对 1.URL地址能不能正常访问,在访问的地址echo或dump()一下,然后在浏览器访问一下(URL最好不要用m,c,a格式写) 2.TOKEN设置的与后台设置 ...
- 微信公众平台服务器配置时token验证失败
这两天一直在弄微信公众号开发,在进行服务器配置时,发现总是返回token验证失败.这个问题困扰了两天,今天终于解决了.现在总结一下. 一般来说服务器配置token验证失败,可能有以下几个方面: 1.服 ...
- 微信公共平台 “token验证失败”的一个原因
我按照文档里的这个说明填写的url就是 http://外网ip:80/wx , 但是一直是 "token验证失败". 用一个别人的网页测试了服务端没错.浪费了半天时间没解决. 最后 ...
- php 微信token验证失败,php下微信token验证失败怎么办?
php下微信token验证失败的解决办法:首先调用系统环境变量[$_SERVER],可以查看到HTTP请求的信息:然后将其写入到本地文件中,并用浏览器打开[url+log.html]路径:最后在微信中 ...
- nodejs+express解决微信公众号token验证失败
nodejs+express解决微信公众号token验证失败 问题描述 下面是服务端代码 问题原因 解决方案 重新运行服务器问题解决 结语 问题描述 这里是测试号的状态,如果是公众号的话上边应该显示t ...
- 在微信公众号后台进行基本配置时遇到系统发生错误,请稍后重试、token验证失败、请求URL超时的解决办法
一."系统发生错误,请稍后重试" 这是因为你填写的URL地址,微信通过外网访问不到导致的,即URL不可以随便写,URL需要是一个外网可以访问的地址才行:本人使用的内外网穿透技术na ...
- php 微信接口验证失败,微信接口配置token验证失败。
我在新浪sae申请了账号之后创建了一个应用作为测试微信接口使用,代码用的都是官方教程的,但是在提交服务器配置的时候不是连接失败就是token验证失败,地址和token我确认没有填写错误,实在找不出原因 ...
最新文章
- javascript页面登录代码_自己动手做一个很酷的登录页面
- unity3d___UGui中如何创建loading...进度条
- linux系统命令行基础知识点
- oracle诊断,Oracle 诊断事件列表
- TIOBE 9 月榜单:C#上涨1.18,Java 同比下滑3.18
- 【COCI 2018/2019 Round #2】Kocka
- 关于MapReduce单词统计的例子:
- C# 7.0 新特性3: 模式匹配
- 2021“科创中国”开源创新榜评选专家评审会在北京成功举办
- Android应用中使用及实现系统“分享”接口
- ros之service通讯
- [arduino]-序言:面向仅有C语言基础之人的单片机开发板
- vmware ubuntu 16.04 guest 修复不能桌面大小自动调整和从宿主机复制粘贴的问题
- python librosa库实现变声
- HTML实现在线取色器
- Linux实战(9):Docker一键搭建kms服务
- android分享截屏到微信,Android截屏分享功能
- HBase开发: Java API 管理表
- 典型企业设备链路冗余备份方案
- Windows 11系统还原点怎么创建?