JWT 介绍
JWT(Json Web Token)是一种开放标准,已Json对象的方式在各方之间安全地传输信息
JWT登陆状态不在服务器端进行存储,而是通过秘钥生成一个具有有效时间的Token返回给前端,Token中包含类似用户的Id等信息 ,之后的请求将Token携带到服务器端认证,认证通过后可解析Token拿到用户标识进行后续操作
 
JWT官网地址: https://jwt.io
 
JWT结构:(格式: aaaaaa.bbbb.cccc)
(1)Header
(2)Payload 载荷,存放需要传递的数据(用户信息和认证信息等)
 JWT 规定了7个官方字段,供选用。
1 iss (issuer):签发人
2 exp (expiration time):过期时间
3 sub (subject):主题
4 aud (audience):受众
5 nbf (Not Before):生效时间
6 iat (Issued At):签发时间
7 jti (JWT ID):编号
(3)Signature 签名(防止数据被篡改)
使用编码后(base64编码)的header和payload再加上我们提供的一个公钥,然后使用header中指定的签名算法进行签名。
作用是保证JWT没有被窜改过
 
JWT使用
引用:Microsoft.AspNetCore.Authentication.JwtBearer
1.在“appsettings.json”中配置信息存储:
 "JwtSettings": {
"Issuer": "admin",
"Audience": "user",
"SecretKey": "dadf4t5gfg6hh6h6h"
}
 
2.通过依赖注入,将配置文件注入到我们的类对象中
创建类“JwtSettings
 public class JwtSettings
{
public string Issuer { get; set; }
public string Audience { get; set; }
public string SecretKey { get; set; }
}

在Startup.cs中注入:

 //ConfigureServices
services.Configure<JwtSettings>(Configuration.GetSection("JwtSettings"));
JwtSettings setting = new JwtSettings();
Configuration.Bind("JwtSettings", setting);
JwtHelper.Settings = setting;
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) //Configure
app.UseAuthentication();
 
3.创建JwtHelper.cs生成token
 public class JwtHelper
{
private static JwtSettings settings;
public static JwtSettings Settings { set { settings = value; } }
public static string create_Token()
{
var claims = new Claim[] {
new Claim(ClaimTypes.Name, "zhangsan"),
new Claim(ClaimTypes.Role, "admin"),
new Claim(ClaimTypes.Sid,"wmcodetypeid")
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(settings.SecretKey));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: settings.Issuer,
audience: settings.Audience,
claims: claims,
expires: DateTime.Now.AddDays(1),
signingCredentials: creds);
var Token = new JwtSecurityTokenHandler().WriteToken(token);
return Token;
}
}

测试认证:

[HttpPost]
[Authorize]
public string GetOnlineCallerList()
{
TableData data = new TableData();
data = _service.GetOnlineCallerList();
return JsonHelper.Instance.Serialize(data);
}

未在表头添加token认证,状态

在表头添加token认证,状态,返回成功。

最新文章

  1. 使windows隐藏文件全部显示出来
  2. html显示时间
  3. hdu 5878 I Count Two Three (2016 ACM/ICPC Asia Regional Qingdao Online 1001)
  4. 实现Redis的主从复制配置
  5. JQuery 定时器 (Jquery Timer 插件)
  6. 分享两个你可能不知道的Java小秘密
  7. C++学习笔记(九):作用域和命名空间
  8. 在ListView中使用多个布局
  9. angular.js封装的文件上传指令
  10. win7系统中使用DOS命令是出现乱码的解决方法
  11. NMEA0183
  12. ZooKeeper 实现分布式队列
  13. python 中间件
  14. py3,休息时间玩点小把戏
  15. Doker安装日志,留个记录而已
  16. Keepalived详解(四):通过vrrp_script实现对集群资源的监控【转】
  17. Android中使用Log4j及配置说明
  18. [Spring] 学习Spring Boot之一:基本使用及简析
  19. 2、COCOS2D-X内存管理机制
  20. K-Means 算法(Java)

热门文章

  1. Mercurial 的hook使用
  2. [算法模板]倍增求LCA
  3. linux 挂载windows ntfs 分区 -- centos 安装ntfs-3g
  4. 禁用wordpress新编辑器,使用经典编辑器的方法
  5. Python数据分析学习(二)
  6. vs开启,Windows 10磁盘占用100%解决办法
  7. layer.confirm 防止post重复提交
  8. 008_AuditionCC系列1
  9. odoo开发笔记 -- 提高访问安全性的一种方式
  10. 支付宝小程序开发——如何获取支付宝小程序页面的https链接