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相关推荐

  1. java微信公众号开发token验证失败的问题及解决办法

    java微信公众号开发token验证失败的问题及解决办法 参考文章: (1)java微信公众号开发token验证失败的问题及解决办法 (2)https://www.cnblogs.com/beardu ...

  2. 微信token验证失败的解决方法

    微信token验证失败的解决方法 参考文章: (1)微信token验证失败的解决方法 (2)https://www.cnblogs.com/kenshinobiy/p/5433705.html 备忘一 ...

  3. 关于TP框架的微信开发服务器配置TOKEN验证失败解决方案

    首先得确定一下服务器配置的参数有没有写对 1.URL地址能不能正常访问,在访问的地址echo或dump()一下,然后在浏览器访问一下(URL最好不要用m,c,a格式写) 2.TOKEN设置的与后台设置 ...

  4. 微信公众平台服务器配置时token验证失败

    这两天一直在弄微信公众号开发,在进行服务器配置时,发现总是返回token验证失败.这个问题困扰了两天,今天终于解决了.现在总结一下. 一般来说服务器配置token验证失败,可能有以下几个方面: 1.服 ...

  5. 微信公共平台 “token验证失败”的一个原因

    我按照文档里的这个说明填写的url就是 http://外网ip:80/wx , 但是一直是 "token验证失败". 用一个别人的网页测试了服务端没错.浪费了半天时间没解决. 最后 ...

  6. php 微信token验证失败,php下微信token验证失败怎么办?

    php下微信token验证失败的解决办法:首先调用系统环境变量[$_SERVER],可以查看到HTTP请求的信息:然后将其写入到本地文件中,并用浏览器打开[url+log.html]路径:最后在微信中 ...

  7. nodejs+express解决微信公众号token验证失败

    nodejs+express解决微信公众号token验证失败 问题描述 下面是服务端代码 问题原因 解决方案 重新运行服务器问题解决 结语 问题描述 这里是测试号的状态,如果是公众号的话上边应该显示t ...

  8. 在微信公众号后台进行基本配置时遇到系统发生错误,请稍后重试、token验证失败、请求URL超时的解决办法

    一."系统发生错误,请稍后重试" 这是因为你填写的URL地址,微信通过外网访问不到导致的,即URL不可以随便写,URL需要是一个外网可以访问的地址才行:本人使用的内外网穿透技术na ...

  9. php 微信接口验证失败,微信接口配置token验证失败。

    我在新浪sae申请了账号之后创建了一个应用作为测试微信接口使用,代码用的都是官方教程的,但是在提交服务器配置的时候不是连接失败就是token验证失败,地址和token我确认没有填写错误,实在找不出原因 ...

最新文章

  1. javascript页面登录代码_自己动手做一个很酷的登录页面
  2. unity3d___UGui中如何创建loading...进度条
  3. linux系统命令行基础知识点
  4. oracle诊断,Oracle 诊断事件列表
  5. TIOBE 9 月榜单:C#上涨1.18,Java 同比下滑3.18
  6. 【COCI 2018/2019 Round #2】Kocka
  7. 关于MapReduce单词统计的例子:
  8. C# 7.0 新特性3: 模式匹配
  9. 2021“科创中国”开源创新榜评选专家评审会在北京成功举办
  10. Android应用中使用及实现系统“分享”接口
  11. ros之service通讯
  12. [arduino]-序言:面向仅有C语言基础之人的单片机开发板
  13. vmware ubuntu 16.04 guest 修复不能桌面大小自动调整和从宿主机复制粘贴的问题
  14. python librosa库实现变声
  15. HTML实现在线取色器
  16. Linux实战(9):Docker一键搭建kms服务
  17. android分享截屏到微信,Android截屏分享功能
  18. HBase开发: Java API 管理表
  19. 典型企业设备链路冗余备份方案
  20. Windows 11系统还原点怎么创建?

热门文章

  1. Go 知识点(09)— for select 作用于 channel
  2. 【Sql Server】DateBase-SQL安全
  3. 机房收费系统【VB版】——上下机
  4. python符号求导
  5. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
  6. LeetCode简单题之二叉搜索树中的众数
  7. GPU编程和流式多处理器
  8. deepstream-开放式实时服务器
  9. 科技公司重新关注2级以上驾驶员辅助
  10. 2021年大数据Spark(十六):Spark Core的RDD算子练习