.NET core 3.0如何使用Jwt保护api详解_实用技巧

来源:脚本之家  责任编辑:小易  

ide不允许数字开头的变量,枚举前边加个字符前缀就好,比如g2019年12月,g_2019年12月www.zgxue.com防采集请勿采集本网。

摘要:

本文演示如何向有效用户提供jwt,以及如何在webapi中使用该token通过JwtBearerMiddleware中间件对用户进行身份认证。

目测很可能是E5160 771至强双核3.0G哦~性能和酷睿775基本一样 简单算下成本,5160 60+10元运费应该70左右 主板P43=50左右 内存2G=100左右 硬盘=100左右 显卡很可能是9600GT=100左右 考虑到时别人

认证和授权区别?

你好楼主 i75500u是睿频到3G的 也就是说,当满载的时候,自动提到3G的 不用手动设的!

首先我们要弄清楚认证(Authentication)和授权(Authorization)的区别,以免混淆了。认证是确认的过程中你是谁,而授权围绕是你被允许做什么,即权限。显然,在确认允许用户做什么之前,你需要知道他们是谁,因此,在需要授权时,还必须以某种方式对用户进行身份验证。

俩都没说全,i5 2.3ghz很像笔记本的cpu。我直接想到的是i5 2410M。Intel Core2 Duo 3.0Ghz最先想到的是e8400。如果是这俩比的话i5好点,但是玩游戏还看显卡和内存。所以单独这俩比较没意义。

什么是JWT?

1.进BIOS 2.到芯片组那个页面,就是有CPU,RAM,PCIE这些字样的页面 3.将带有PCIE字样的那项后面的频率设定在100或101 4.在CPU外频下面有个倍频选项,enter进入,选择比你现在的更高的那项 5.按F10

根据维基百科的定义,JSON WEB Token(JWT),是一种基于JSON的、用于在网络上声明某种主张的令牌(token)。JWT通常由三部分组成:头信息(header),消息体(payload)和签名(signature)。

i9 九代的核显似乎不再提供 for win7的驱动程序。So 你这么牛顶天的CPU 似乎应该陪一个独立显卡。新主板确实都是 原生的xHCI的 USB3.0/3.1 芯片。Win7 没有内置这个驱动。你应该使用华硕或者技嘉

头信息指定了该JWT使用的签名算法:

header = '{"alg":"HS256","typ":"JWT"}'

HS256表示使用了HMAC-SHA256来生成签名。

消息体包含了JWT的意图:

payload = '{"loggedInAs":"admin","iat":1422779638}'//iat表示令牌生成的时间

未签名的令牌由base64url编码的头信息和消息体拼接而成(使用"."分隔),签名则通过私有的key计算而成:

key = 'secretkey' unsignedToken = encodeBase64(header) + '.' + encodeBase64(payload) signature = HMAC-SHA256(key, unsignedToken)

最后在未签名的令牌尾部拼接上base64url编码的签名(同样使用"."分隔)就是JWT了:

token = encodeBase64(header) + '.' + encodeBase64(payload) + '.' + encodeBase64(signature)# token看起来像这样: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI

JWT常常被用作保护服务端的资源(resource),客户端通常将JWT通过HTTP的Authorization header发送给服务端,服务端使用自己保存的key计算、验证签名以判断该JWT是否可信:

Authorization: Bearer eyJhbGci*...<snip>...*yu5CSpyHI

准备工作

使用vs2019创建webapi项目,并且安装nuget包

Microsoft.AspNetCore.Authentication.JwtBearer

Startup类

ConfigureServices 添加认证服务

services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(options => { options.SaveToken = true; options.RequireHttpsMetadata = false; options.TokenValidationParameters = new TokenValidationParameters() { ValidateIssuer = true, ValidateAudience = true, ValidAudience = "https://www.cnblogs.com/chengtian", ValidIssuer = "https://www.cnblogs.com/chengtian", IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SecureKeySecureKeySecureKeySecureKeySecureKeySecureKey")) }; });

Configure 配置认证中间件

app.UseAuthentication();//认证中间件、

创建一个token

添加一个登录model命名为LoginInput

public class LoginInput { public string Username { get; set; } public string Password { get; set; } }

添加一个认证控制器命名为AuthenticateController

[Route("api/[controller]")] public class AuthenticateController : Controller { [HttpPost] [Route("login")] public IActionResult Login([FromBody]LoginInput input) { //从数据库验证用户名,密码 //验证通过 否则 返回Unauthorized //创建claim var authClaims = new[] { new Claim(JwtRegisteredClaimNames.Sub,input.Username), new Claim(JwtRegisteredClaimNames.Jti,Guid.NewGuid().ToString()) }; IdentityModelEventSource.ShowPII = true; //签名秘钥 可以放到json文件中 var authSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SecureKeySecureKeySecureKeySecureKeySecureKeySecureKey")); var token = new JwtSecurityToken( issuer: "https://www.cnblogs.com/chengtian", audience: "https://www.cnblogs.com/chengtian", expires: DateTime.Now.AddHours(2), claims: authClaims, signingCredentials: new SigningCredentials(authSigningKey, SecurityAlgorithms.HmacSha256) ); //返回token和过期时间 return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token), expiration = token.ValidTo }); } }

添加api资源

利用默认的控制器WeatherForecastController 添加个Authorize标签 路由调整为:[Route("api/[controller]")] 代码如下

[Authorize] [ApiController] [Route("api/[controller]")] public class WeatherForecastController : ControllerBase

到此所有的代码都已经准好了,下面进行运行测试

运行项目

使用postman进行模拟

输入url:https://localhost:44364/api/weatherforecast

    

发现返回时401未认证,下面获取token

通过用户和密码获取token

如果我们的凭证正确,将会返回一个token和过期日期,然后利用该令牌进行访问

利用token进行请求

ok,最后发现请求状态200!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对真格学网的支持。

方法/步骤先来看下电脑系统,看你的电脑系统是否是支持,不一定要最高的系统版本,最低win10就可以的。请点击输入图片描述接下来看下IIS、数据库和dotnet应用程序,本地IIS和数据库也都是已经安装好,本地安装的IIS是Internet Information Services10,数据库是mssql2016,dotnet环境双击程序按照提示一步步安装下去就可以。请点击输入图片描述请点击输入图片描述请点击输入图片描述请点击输入图片描述请点击输入图片描述在IIS中创建站点,建立好数据库用户名,拷贝好程序文件,进入安装流程。请点击输入图片描述请点击输入图片描述请点击输入图片描述用浏览器访问本地地址,在前面的IIS中已经看到,部署的网站地址端口是87号,浏览器中输入http://localhost:87/ 就可以运行了,运行后按照步骤安装即可。请点击输入图片描述请点击输入图片描述请点击输入图片描述请点击输入图片描述请点击输入图片描述请点击输入图片描述安装完成后,直接可访问部署好的程序,也可进入后台管理。后台地址为:http://localhost:87/admin/login 回车后,键入之前设定的密码,即可进入后台,整个CMS就在本地部署好了,方便快捷。部署过程也是很简单。请点击输入图片描述请点击输入图片描述请点击输入图片描述内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • asp.net core集成jwt的步骤记录
  • .net core webapi jwt 更为清爽的认证详解
  • asp.net core基于jwt认证的数据接口网关实例代码
  • 深入讲解.net core中的api版本控制
  • .net core api 使用版本控制详解
  • .net core在服务器端获取api传递的参数过程
  • 把jquery的each(callback)方法移植到c#中
  • asp.net core jenkins docker实现一键化部署的实现
  • jquery repeater 模仿 google 展开页面预览子视图
  • asp.net输出png图片时出现gdi+一般性错误的解决方法
  • 浅谈.net core 认证系统源码解析
  • c# static 静态数据成员
  • c/c++中利用空指针简化代码,提高效率
  • 简单几步 实现vs2010对html5的支持
  • .net微信公众号开发之查询自定义菜单
  • asp.net中的数据源概述与配置及实例代码
  • 求逐浪CMS .net core3.0的安装方法?
  • [asp.net core 3.0 mvc] 在model中创建一个enum,有几个值是数字+中文,报错,该如何正确书写?
  • CPU INTEL 酷睿i75500 可加速至3.0ghz 是什么意思 如何加速
  • CPU 酷睿3.0 四核好吗?
  • 请问酷睿2系列的双核,3.0以上主频的处理器 都叫什么名字啊?
  • 酷睿i75500u怎么加速到3.0ghz
  • Intel Core2 Duo 3.0Ghz 和 Intel i5 2.3Ghz 哪个CPU好点?
  • 本人的CPU是intel酷睿2 Q8300的。想超频到3.0或者3.375,问,怎么设置,以下是机子配置。
  • Intel Core i9-9900K是怎么装到Win7的?是不是有了USB3.0驱动?
  • CORE2 E4500会比P4 3.0好吗??请说明下,谢谢~~~~
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全基础应用实用技巧自学过程首页asp.net实用技巧asp.net core集成jwt的步骤记录.net core webapi jwt 更为清爽的认证详解asp.net core基于jwt认证的数据接口网关实例代码深入讲解.net core中的api版本控制.net core api 使用版本控制详解.net core在服务器端获取api传递的参数过程把jquery的each(callback)方法移植到c#中asp.net core jenkins docker实现一键化部署的实现jquery repeater 模仿 google 展开页面预览子视图asp.net输出png图片时出现gdi+一般性错误的解决方法浅谈.net core 认证系统源码解析c# static 静态数据成员c/c++中利用空指针简化代码,提高效率简单几步 实现vs2010对html5的支持.net微信公众号开发之查询自定义菜单asp.net中的数据源概述与配置及实例代码java正则表达式 pattern和matche未将对象引用设置到对象的实例 (asp.net(c#)网页跳转七种方法小结未能加载文件或程序集“xxx”或它asp.net“服务器应用程序不可用”asp.net中的几种弹出框提示基本实asp.net gridview 72般绝技asp.net生成excel并导出下载五种asp.net汉字转拼音和获取汉字首字asp.net对路径"xxxxx"net操作access数据库示例分享把jquery的each(callback)方法移植到c#中asp.net mvc小结之基础篇(二)linux下部署.net core环境的步骤详解asp.net数据输出到excel表格中提取html代码中文字的c#函数net索引器使用方法实例代码.net core系列之memorycache 初识解决asp.net ajax sys未定义的解决方法signalr self host+mvc等多端消息推送服务
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved