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认证,状态,返回成功。

.Net Core WepApi-JWT认证的更多相关文章

  1. Asp.Net Core基于JWT认证的数据接口网关Demo

    近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求用Aps.Net Core做数据网关服务且基于JWT认证实现对 ...

  2. Dotnet core使用JWT认证授权最佳实践(二)

    最近,团队的小伙伴们在做项目时,需要用到JWT认证.遂根据自己的经验,整理成了这篇文章,用来帮助理清JWT认证的原理和代码编写操作. 第一部分:Dotnet core使用JWT认证授权最佳实践(一) ...

  3. Dotnet core使用JWT认证授权最佳实践(一)

    最近,团队的小伙伴们在做项目时,需要用到JWT认证.遂根据自己的经验,整理成了这篇文章,用来帮助理清JWT认证的原理和代码编写操作. 一.JWT JSON Web Token (JWT)是一个开放标准 ...

  4. .NET Core的JWT认证的学习

    今天学习下JWT,遇到了两个坑爹问题,这里记录下.在 ASP.NET Core 中,授权的设置方式有两种,可以使用角色,也可以使用策略,这里也将简单举例角色.策略的使用. JWT这里不做介绍,如果想了 ...

  5. 把旧系统迁移到.Net Core 2.0 日记 (18) --JWT 认证(Json Web Token)

    我们最常用的认证系统是Cookie认证,通常用一般需要人工登录的系统,用户访问授权范围的url时,会自动Redirect到Account/Login,登录后把认证结果存在cookie里. 系统只要找到 ...

  6. ASP.NET Core 基于JWT的认证(二)

    ASP.NET Core 基于JWT的认证(二) 上一节我们对 Jwt 的一些基础知识进行了一个简单的介绍,这一节我们将详细的讲解,本次我们将详细的介绍一下 Jwt在 .Net Core 上的实际运用 ...

  7. ASP.NET Core 基于JWT的认证(一)

    ASP.NET Core 基于JWT的认证(一) Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计 ...

  8. asp.net core 自定义401和异常显示内容(JWT认证、Cookie Base认证失败显示内容)

    asp.net core 2.0使用JWT认证园子里已经有挺多帖子了,但开发中发现认证未授权情况下返回的401状态码是没有任何信息的,业务中可能有需要返回一串错误的Json信息.在这里我分享一个自定义 ...

  9. 如何简单的在 ASP.NET Core 中集成 JWT 认证?

    前情提要:ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统 文章超长预警(1万字以上),不想看全部实现过程的同学可以直接跳转到末尾查看成果或者一键安装相关的 nuget 包 自上一 ...

  10. .net core webapi jwt 更为清爽的认证

    原文:.net core webapi jwt 更为清爽的认证 我的方式非主流,控制却可以更加灵活,喜欢的朋友,不妨花一点时间学习一下 jwt认证分为两部分,第一部分是加密解密,第二部分是灵活的应用于 ...

随机推荐

  1. 打包文件到APK安装包中

    打包文件到APK安装包中 目的:将配置文件或SQLITE打包进APK中 1.首先,打开菜单 Project - Deployment 2.点击添加按钮,选择要添加的文件(文件最好放在工程目录中,这样, ...

  2. SpringMVC(十五):Dispatcher的重要组件之一MultipartResolver(StandardServletMultipartResolver和CommonsMultipartResolver)的用法

    MultipartResolver组件 从Spring官网上可以看到MultipartResolver接口的定义信息: public interface MultipartResolver A str ...

  3. Curiosity-Driven Learning through Next State Prediction

    Curiosity-Driven Learning through Next State Prediction 2019-10-19 20:43:17 This paper is from: http ...

  4. Flutter Plugin开发简单示例

    新建Plugin项目: flutter create --template=plugin -i swift -a javahello lib/hello.dart: 插件包的Dart API. and ...

  5. C语言宏应用-------#define STR(X) #X

    C语言宏应用-------#define STR(X) #X   #:会把参数转换为字符串 #define STR(x) #x #define MAX 100 STR(MAX) 会被扩展成" ...

  6. 解决 No IDEA annotations attached to the JDK 1.8和xml文件没有代码提示

    Android studio3.3 用着用着突然xml里没有代码联想了,忙着做其他的就没管,写xml的时候就硬写... 然后今天用着突然在class文件上方提示No IDEA annotations ...

  7. Windows 反调试技术——OpenProcess 权限过滤 - ObRegisterCallback

    转载: https://blog.xpnsec.com/anti-debug-openprocess/ 看雪翻译:https://bbs.pediy.com/thread-223857.htm 本周我 ...

  8. Python - Django - 中间件 process_exception

    process_exception(self, request, exception) 函数有两个参数,exception 是视图函数异常产生的 Exception 对象 process_except ...

  9. EasyNVR摄像机网页无插件直播方案H5前端构建之:bootstrap弹窗功能的实现方案与代码

    前言介绍 在web前端的网页设计中,为了展示出简洁的网页风格和美观的效果,往往会使用弹窗效果在EasyNVR前端页面录像检索功能时,必然会播放录像,如果单独为播放录像文件排一个界面,用户在使用上会更加 ...

  10. 解决chrome浏览器插件开发者模式每次启动要确认弹出框的问题

    在日常工作中,我们经常会用到一些浏览器插件,有些插件因为没上架到浏览器的应用商店,只能以开发者模式运行,但是chrome浏览器出了限制,每次重新启动浏览器的时候,就会弹出该插件是否要禁止运行的对话框, ...