首页 > 基础资料 博客日记

c#一行代码免写登录页:PicoServer 的 AddBasicAuth 中间件实战

2026-05-29 12:00:02基础资料围观6

本篇文章分享c#一行代码免写登录页:PicoServer 的 AddBasicAuth 中间件实战,对你有帮助的话记得收藏一下,看极客资料网收获更多编程知识

从一个项目说起

最近做一个内部项目,麻雀虽小,五脏俱全:

  • WebSocket 实时通信
  • WebAPI 数据接口
  • 简单配置页面
  • 数据大屏页面
  • 公开的扫码页面

全部跑在同一个现有域名下,不能另开新域名。认证方式也各不相同:

类型 认证方式
WebSocket 自定义 JSON 消息认证
WebAPI 简单 Token
简单配置页面 / 数据大屏 Basic Auth
扫码页面 无需认证

客户对需要认证的页面提了一个要求:简单点就行,浏览器弹个框输密码就够了,不用搞多华丽。

先看最终效果,一行代码搞定:

server.AddBasicAuth("/daping/", "admin", "123456");

下面展开说。

为什么挂在原有域名下

项目本身已经有一个主域名,所有业务都在上面。新增的配置页面不能另开新域名(比如 config.xxx.com),必须挂在现有域名下的某个路径(比如 /daping/)。

这样做的好处:

  • 统一域名:用户不需要记新地址,SSL 证书管理也简单
  • 方便运维:NGINX 只需要配置一次反代,后续加新路径不用改
  • 规则集中:认证逻辑写在代码里,和业务在一起

Basic Auth 是什么

HTTP 基本身份认证,HTTP/1.0 时代就存在的认证方式。工作流程:浏览器访问受保护路径 → 服务器返回 401 → 浏览器自动弹出登录框 → 用户输入用户名密码 → 后续请求自动带上认证信息。

核心价值:登录框是浏览器自带的,不需要你写任何前端代码。

这个弹框长得不好看,但客户并不在乎这个,他只要“有个密码挡着就行”。现在有 OAuth、JWT 等更复杂的方案,但 Basic Auth 在简单场景下依然好用——内部工具、配置页面、临时加锁。客户要的就是“简单点”,正好合适。

如果配置页面需要暴露在公网,前面加一层 NGINX 做 HTTPS 即可,PicoServer 不直接处理证书。

项目中的完整用法

var server = new WebAPIServer();

// 一行代码:配置相关页面统一用 Basic Auth 保护,免认证子路径
server.AddBasicAuth("/daping/", "admin", "123456","/daping/config");

// 静态文件托管
server.AddStaticFiles("/daping/", "web");       // 简单配置页面

// WebAPI 简单 Token 认证
server.AddSimpleTokenVerify("token111286");

// WebSocket 配置,添加路由等
server.enableWebSocket = true;
server.WsOnConnectionChanged = WsConnectChanged;
server.WsOnMessage = OnMessageReceviced;

server.StartServer();

AddBasicAuth 参数说明:AddBasicAuth(需要保护的路径, 用户名, 密码, 免认证子路径(可选))

PicoServer 的多种认证方式

同一个项目里,不同路径可以用不同的认证方式,互不干扰:
好的,更新表格如下:

方法 适用场景 特点
AddBasicAuth 简单配置页面、内部工具 浏览器弹框,无需写登录页
AddSimpleTokenVerify WebAPI、简单接口认证 轻量 Token,无状态验证
AddJwtTokenVerify WebAPI、标准 JWT 认证 支持过期、刷新等标准特性
AddStaticFiles 静态文件托管 自动识别 MIME 类型
enableWebSocket WebSocket 实时通信 支持自定义认证逻辑

这些中间件和方法属性可以任意组合,各司其职。

扩展玩法:免认证子路径

如果配置后台里有一个子路径需要公开,用第四个参数排除:

// /admin/dashboard/preview/ 不需要认证
server.AddBasicAuth("/admin/", "admin", "123456", "/admin/dashboard/preview/");

NGINX 配置

项目前面有 NGINX 做 SSL 和反代。Basic Auth 也可以在 NGINX 层配置,但:

  • 改 NGINX 配置要重载,不够灵活
  • 认证规则写在代码里,和业务在一起,更直观
  • 改密码、加排除路径,改代码发布就行,NGINX 不用动

NGINX 只需要配置一次反代(按实际路径配置):

location /daping {
    proxy_pass http://127.0.0.1:8090;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

所有请求反代给 PicoServer,具体哪个路径需要认证、用什么方式认证,全由 PicoServer 在代码里决定。

感慨

Basic Auth 是一项老技术,至今仍在简单场景中发挥着价值。PicoServerAddBasicAuth 把这种“简单”发挥到极致:一行代码,不用写登录页,浏览器自动弹框,完美融入现有域名。 如果你也有类似的场景——给简单配置页面加个锁、不想写登录页、不想动 NGINX——不妨试试。


文章来源:https://www.cnblogs.com/juziyu/p/20213433
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云