学习身份认证,请先无比按照教程二,把Postman安装好

Postman国内下载貌似网速很慢讷!

这里附一个下载地址:http://nuget.uuids.cn:1002/postmanx64.exe,这个是我自己搭建的服务器,10m/s,性能一般般,别挤炸了。

好了进入正题。

新建一个Asp.netCore 项目 (我用的VS2019)

VS下载地址:https://visualstudio.microsoft.com/zh-hans/ 版本无所谓,你都混到来看我博客了,计较VS2019的版本 是没意义的。

项目名称 WebAuthorize。其他不变。单击创建

嗯哼!我们学的 是 身份认证 所以呀! 这里选择 "空"。

版本什么的 尽量选择和我一样的,其他版本不排除出现 话题之外的问题。.net core 2.0以下的就别用了。

项目结构非常简单

如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;namespace WebAuthorize
{public class Startup{// This method gets called by the runtime. Use this method to add services to the container.// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940public void ConfigureServices(IServiceCollection services){}// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.public void Configure(IApplicationBuilder app, IHostingEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.Run(async (context) =>{await context.Response.WriteAsync("Hello World!").ConfigureAwait(true);});}}
}

进来之后 应用直接给你返回个HelloWorld 结束。

跑一下看看!啊哈!就是这样!

好了,现在我们加个中间件 过滤请求。

啥加 中间件?这怎么解释!!!

直白点就是 客户端请求到了服务器后,在 控制器和服务器之间加入一层 中间处理层!

还不懂?Ctrl+W 右拐!

打开PostMan。

填写好 参数可以得到下图

接下来我们配置身份认证信息

在Authorzation下选 basic Auth, 并把用户名和密码填好

点一下”Preveiw Request ” PostMan会自动生成请求信息。然后转到Headers下

就可以看到下图

大家可以注意到 左边key 添加了一个Authorization  键值为Basic 一串字符

我们把这串字符 拿到这个网址

http://tool.oschina.net/encrypt?type=3

可以得到下图

啥意思?

其实PostMan 是将 我输入的密码和账号 以字节的形式转换为了base

64 字符串,你要知道 http协议 是超本文,传输字节数据 不方便,所以做了一次转换,(base64 是啥自己 百度)

现在我们在代码中打个断点,并让postman再次发下请求。

看下面的动图

我们可以在header 中找到Authorize。

好了,现在我们编写身份认证类

    public static class LaoWangAuthorizeExtension{public static void AddLaoWangAuthorize(this IApplicationBuilder applicationBuilder){applicationBuilder.Use(async (currentContext,nextContext) =>{if (currentContext.Request.Headers.ContainsKey("Authorization")){var authorize=  currentContext.Request.Headers["Authorization"].ToString();if (authorize.Contains("Basic"))//如果是Basic 身份认证{var info= authorize.Replace("Basic ", string.Empty);var bytes=  Convert.FromBase64String(info);//反解析Basic 64var contents=   Encoding.Default.GetString(bytes);var dd=  contents.Split(":").ToArray();var userName = dd[0];//用户名var userPwd = dd[1];//密码if (userName== "GeBiLaoWang"&&userPwd=="123456"){await currentContext.Response.WriteAsync("验证通过").ConfigureAwait(true);await nextContext?.Invoke();return;}}}currentContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;await currentContext.Response.WriteAsync("See tou tomorrow!").ConfigureAwait(true);});}}

然后将代码修改为如下

        public void Configure(IApplicationBuilder app, IHostingEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.AddLaoWangAuthorize();app.Run(async (context) =>{await context.Response.WriteAsync("Hello World!").ConfigureAwait(true);});}

启动 浏览器查看。

因为我们代码做了拦截 ,所以

这里直接 再见了!

再看下 postman

当我们用错误的账号时

当我们用正确的账号时

身份认证就是这么简单。

源代码  见我的下载区

Asp.Net Core 系列教程 (三)身份认证相关推荐

  1. ASP.NET Core 3.0 gRPC 身份认证和授权

    一.开头聊骚 本文算是对于 ASP.NET Core 3.0 gRPC 研究性学习的最后一篇了,以后在实际使用中,可能会发一些经验之文.本文主要讲 ASP.NET Core 本身的认证授权和gRPC接 ...

  2. asp.net core系列 48 Identity 身份模型自定义

    一.概述 ASP.NET Core Identity提供了一个框架,用于管理和存储在 ASP.NET Core 应用中的用户帐户. Identity添加到项目时单个用户帐户选择作为身份验证机制. 默认 ...

  3. ASP .NET Core Web Razor Pages系列教程三:自动生成Razor Pages (CRUD)

    系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...

  4. ASP.NET 5系列教程 (四):向视图中添加服务和发布应用到公有云

    向视图中添加服务 现在,ASP.NET MVC 6 支持注入类到视图中,和VC类不同的是,对类是公开的.非嵌套或非抽象并没有限制.在这个例子中,我们创建了一个简单的类,用于统计代办事件.已完成事件和平 ...

  5. ASP.NET 5系列教程(七)完结篇-解读代码

     在本文中,我们将一起查看TodoController 类代码. [Route] 属性定义了Controller的URL 模板: [Route("api/[controller]&quo ...

  6. 【ASP.NET Identity系列教程(三)】Identity高级技术

    注:本文是[ASP.NET Identity系列教程]的第三篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序 ...

  7. 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」

    原文:5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢 ...

  8. ASP.NET Core 和 EF Core系列教程——CRUD

    ASP.NET Core 和 EF Core系列教程--CRUD (2 / 10) CRUD 为创建.读取.更新.删除的英文首字母的缩写 作者:Tom Dykstra和Rick Anderson Co ...

  9. asp.net core 系列之webapi集成EFCore的简单操作教程

    因为官网asp.net core webapi教程部分,给出的是使用内存中的数据即 UseInMemoryDatabase 的方式, 这里记录一下,使用SQL Server数据库的方式即 UseSql ...

  10. ASP.NET Core 2.0 : 三. 项目结构

    ASP.NET Core 2.0 : 三. 项目结构 原文:ASP.NET Core 2.0 : 三. 项目结构 本章我们一起来对比着ASP.NET Framework版本看一下ASP.NET Cor ...

最新文章

  1. Linux RPM 相关
  2. 笔记 - Ali Cloud 块存储简介
  3. 解决 WPF 绑定集合后数据变动界面却不更新的问题(使用 ObservableCollection)
  4. Java在Windows下导出xml文件到Linux服务器上
  5. ubuntu 14.04 16.04 安装caffe+cuda8.0+pycafee总结
  6. 任务调度系统 xxl-job,V1.4.1 新特性速览
  7. 鲍鱼的“几头”是什么意思?什么样的好吃?
  8. HTTP 之 HTTPD介绍
  9. 华为鸿蒙HarmonyOS,华为鸿蒙HarmonyOS-系统概述
  10. 介绍电子计算机的英文简介,写介绍电脑的英语作文
  11. cv2 python 读取像素点_OpenCV+Python车牌字符分割和识别入门
  12. 一分钟搞定网页监控,实现网站链接百度自动推送
  13. photoshop cc版下载
  14. 阿里巴巴(容器镜像服务)docker+springboot实践
  15. Leetcode刷题100天—5855. 找出数组中的第 K 大整数(优先队列)—day22
  16. Windows 10 运行python弹出windows应用商店
  17. 短文本分类:电力95598工单分类实现
  18. 快手:看见每一种生活(一面凉经)
  19. python ppt自动生成_实战 | Python自动生成PPT调研报告
  20. 字节跳动bytedance西瓜视频播放器研究

热门文章

  1. 三极管共射放大电路的放大倍数怎么设计?
  2. Linux系统中目录或文件颜色代表的含义以及输出内容的颜色显示功能
  3. Qt中mouseMoveEvent在MainWindow中使用
  4. Survey: A Survey on Image Tampering and Its Detection in Real-world Photos 图像仿冒
  5. jquery 如何获取某个元素中的第几个子元素
  6. css和scss设置子元素样式
  7. 向 webview 添加 userScript
  8. Swarm(bzz)节点服务器配置要求
  9. 控制系统中对信号求导的注意事项
  10. 【MOS管知识汇总】分类、区分、寄生二极管、导通条件、开关电路、串联电阻