Asp.Net Core 系列教程 (三)身份认证
学习身份认证,请先无比按照教程二,把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 系列教程 (三)身份认证相关推荐
- ASP.NET Core 3.0 gRPC 身份认证和授权
一.开头聊骚 本文算是对于 ASP.NET Core 3.0 gRPC 研究性学习的最后一篇了,以后在实际使用中,可能会发一些经验之文.本文主要讲 ASP.NET Core 本身的认证授权和gRPC接 ...
- asp.net core系列 48 Identity 身份模型自定义
一.概述 ASP.NET Core Identity提供了一个框架,用于管理和存储在 ASP.NET Core 应用中的用户帐户. Identity添加到项目时单个用户帐户选择作为身份验证机制. 默认 ...
- ASP .NET Core Web Razor Pages系列教程三:自动生成Razor Pages (CRUD)
系列文章目录:系列教程:使用ASP.NET Core创建Razor Pages Web应用程序 - zhangpeterx的博客 系列教程代码的GitHub地址:ASP .Net Core Razor ...
- ASP.NET 5系列教程 (四):向视图中添加服务和发布应用到公有云
向视图中添加服务 现在,ASP.NET MVC 6 支持注入类到视图中,和VC类不同的是,对类是公开的.非嵌套或非抽象并没有限制.在这个例子中,我们创建了一个简单的类,用于统计代办事件.已完成事件和平 ...
- ASP.NET 5系列教程(七)完结篇-解读代码
在本文中,我们将一起查看TodoController 类代码. [Route] 属性定义了Controller的URL 模板: [Route("api/[controller]&quo ...
- 【ASP.NET Identity系列教程(三)】Identity高级技术
注:本文是[ASP.NET Identity系列教程]的第三篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序 ...
- 5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」
原文:5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」 希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢 ...
- ASP.NET Core 和 EF Core系列教程——CRUD
ASP.NET Core 和 EF Core系列教程--CRUD (2 / 10) CRUD 为创建.读取.更新.删除的英文首字母的缩写 作者:Tom Dykstra和Rick Anderson Co ...
- asp.net core 系列之webapi集成EFCore的简单操作教程
因为官网asp.net core webapi教程部分,给出的是使用内存中的数据即 UseInMemoryDatabase 的方式, 这里记录一下,使用SQL Server数据库的方式即 UseSql ...
- ASP.NET Core 2.0 : 三. 项目结构
ASP.NET Core 2.0 : 三. 项目结构 原文:ASP.NET Core 2.0 : 三. 项目结构 本章我们一起来对比着ASP.NET Framework版本看一下ASP.NET Cor ...
最新文章
- Linux RPM 相关
- 笔记 - Ali Cloud 块存储简介
- 解决 WPF 绑定集合后数据变动界面却不更新的问题(使用 ObservableCollection)
- Java在Windows下导出xml文件到Linux服务器上
- ubuntu 14.04 16.04 安装caffe+cuda8.0+pycafee总结
- 任务调度系统 xxl-job,V1.4.1 新特性速览
- 鲍鱼的“几头”是什么意思?什么样的好吃?
- HTTP 之 HTTPD介绍
- 华为鸿蒙HarmonyOS,华为鸿蒙HarmonyOS-系统概述
- 介绍电子计算机的英文简介,写介绍电脑的英语作文
- cv2 python 读取像素点_OpenCV+Python车牌字符分割和识别入门
- 一分钟搞定网页监控,实现网站链接百度自动推送
- photoshop cc版下载
- 阿里巴巴(容器镜像服务)docker+springboot实践
- Leetcode刷题100天—5855. 找出数组中的第 K 大整数(优先队列)—day22
- Windows 10 运行python弹出windows应用商店
- 短文本分类:电力95598工单分类实现
- 快手:看见每一种生活(一面凉经)
- python ppt自动生成_实战 | Python自动生成PPT调研报告
- 字节跳动bytedance西瓜视频播放器研究
热门文章
- 三极管共射放大电路的放大倍数怎么设计?
- Linux系统中目录或文件颜色代表的含义以及输出内容的颜色显示功能
- Qt中mouseMoveEvent在MainWindow中使用
- Survey: A Survey on Image Tampering and Its Detection in Real-world Photos 图像仿冒
- jquery 如何获取某个元素中的第几个子元素
- css和scss设置子元素样式
- 向 webview 添加 userScript
- Swarm(bzz)节点服务器配置要求
- 控制系统中对信号求导的注意事项
- 【MOS管知识汇总】分类、区分、寄生二极管、导通条件、开关电路、串联电阻