.net core web api basic auth
1、自定义中间件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; namespace WebApplication29 { public class AuthenticationMiddleware { private readonly RequestDelegate _next; public AuthenticationMiddleware(RequestDelegate next) { _next = next; } public async Task Invoke(HttpContext context) { string authHeader = context.Request.Headers[ "Authorization" ]; if (authHeader != null && authHeader.StartsWith( "Basic" )) { //Extract credentials string encodedUsernamePassword = authHeader.Substring( "Basic " .Length).Trim(); Encoding encoding = Encoding.GetEncoding( "iso-8859-1" ); string usernamePassword = encoding.GetString(Convert.FromBase64String(encodedUsernamePassword)); int seperatorIndex = usernamePassword.IndexOf( ':' ); var username = usernamePassword.Substring(0, seperatorIndex); var password = usernamePassword.Substring(seperatorIndex + 1); if (IsAuthorized(username,password)) { await _next.Invoke(context); } else { context.Response.StatusCode = 401; //Unauthorized return ; } } else { // no authorization header context.Response.StatusCode = 401; //Unauthorized return ; } } public bool IsAuthorized( string username, string password) { IConfiguration Configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile( "appsettings.json" , true ) .Build(); var basicAuthUserName = Configuration[ "BasicAuth:UserName" ]; var basicAuthPassword = Configuration[ "BasicAuth:Password" ]; // Check that username and password are correct return username.Equals(basicAuthUserName, StringComparison.InvariantCultureIgnoreCase) && password.Equals(basicAuthPassword); } } } |
2、startup添加自定义中间件
3、 可配置
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2020-08-25 C# EPPlus read导入读取Excel到DataSet时日期DateTime列的处理
2020-08-25 使用Dapper批量插入或更新实体, 查询实体等实例
2014-08-25 MVC之ActionResult
2014-08-25 Html辅助方法 之 Form表单标签
2014-08-25 正则表达式30分钟入门教程
2014-08-25 MVC系统过滤器、自定义过滤器
2014-08-25 MVC 数据验证