WebAuthorize(中间件对所有请求进行拦截)core只有通过添加中间件过滤请求方式 而非继承然后写特性的那种方式
2024-10-21 10:24:27
一、WebAuthorize
1、项目名称 WebAuthorize
2、加个中间件 过滤请求。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace WebAuthorize
{
public static class AuthorizeExtensio
{
public static void AddAuthorize(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 64
var contents = Encoding.Default.GetString(bytes);
var dd = contents.Split(":").ToArray();
var userName = dd[];//用户名
var userPwd = dd[];//密码
if (userName == "GeBiLaoWang" && userPwd == "")
{
await currentContext.Response.WriteAsync("验证通过").ConfigureAwait(true); //Response.WriteAsync() 需要引用 Microsoft.AspNetCore.Http;
await nextContext?.Invoke();
return;
}
}
}
currentContext.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
await currentContext.Response.WriteAsync("See tou tomorrow!").ConfigureAwait(true);
});
}
}
}
3、修改配置文件
//添加服务
app.AddAuthorize();
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!").ConfigureAwait(true);
});
准备配置请求测试
1、直接访问
2、配置身份认证信息
在Authorzation下选 basic Auth, 并把用户名和密码填好
点一下”Preveiw Request ” PostMan会自动生成请求信息。然后转到Headers下
3、测试
最新文章
- AndroidStudio中创建Assets文件
- ios category,protocol理解
- p4 是否能自动merge
- 关于Handler与异步消息处理循环的摘抄
- bzoj 4199 [NOI2015]寿司晚宴
- JNDI在本项目中的应用
- bzoj 3261最大异或和
- 利用fastjson解析json并通过js&;ajax实现页面的无跳转刷新
- 在Java中用 . 深层访问JSON数据
- 20175202 《Java程序设计》第六周学习总结
- spring boot 1.x配置,不断完善中
- Unity调试模式设置辅助线是否可见
- python的Web框架,html分页
- Gym 100096D Guessing game
- JDBC架构
- Swift3 页面顶部实现拉伸效果代码
- Spring Security和JWT实现登录授权认证
- 2018.09.08 bzoj1151: [CTSC2007]动物园zoo(状压dp)
- leading--Oracle hint
- Android逆向之旅---带你爆破一款应用的签名验证问题
热门文章
- cs231n assignment1 KNN
- Understanding the Module Pattern in JavaScript
- mysql的my.cnf参数详解
- 协议:FTP
- 【MongoDB】 windows下建立双机主从
- 自动化生成 Openstack 新项目开发框架
- RFC、EMCA-262、TC-39等名词
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第1节 Scanner类_4-练习一_键盘输入两个数
- Week 12 - 673.Number of Longest Increasing Subsequence
- GUI_FlowLayout