一行代码搞定.NET 权限,拒绝重复造轮子,插件化即用

阿木.Net+Ai技术 · 2026-08-28

做.NET 后台项目的时候,最头疼的莫过于权限这一块。很多人开发 Web、管理系统、前后端分离项目,每次新项目都要从头搭一套 ASP.NET Core Identity。建用户表、角色表、登录接口、JWT 签发、后台管理页面,一套流程走下来大半天就没了;老项目想要补上用户权限,又怕改到现有业务代码,一不小心就和原有逻辑耦合在一起,改出一堆 bug。

🔖 介绍

一款轻量级的 ASP.NET Core Identity 插件,主打插拔式用户权限后台管理。简单来说,它就是一个现成做好的权限工具箱,底层基于微软原生的 Identity,没有重新造一套权限轮子。

核心口号:一行代码给项目加上完整 Identity 权限系统。

🔖 适用场景

  1. 快速新建后台管理系统:想快速做一个管理平台,不想花时间搭建登录、账号角色管理模块,优先用它。
  2. 现有老项目补权限:已经开发了一部分业务接口、网站,当初没做登录鉴权,现在需要加上账号管控,又不想大面积重构代码。
  3. 前后端分离项目:Vue、React 前端 + .NET WebApi 后端,需要快速产出 JWT 登录、令牌刷新、接口鉴权能力。
  4. 小型内网工具、工控后台、WMS/MES 配套管理页面:内部工具不需要复杂的自研账号体系,轻量化权限就够用。
  5. 分布式多服务项目:多个微服务共用一套账号权限,数据库抽离成独立库,统一签发 JWT 做身份校验。
不太适合:需要深度魔改 Identity 登录流程、自定义超多复杂业务字段的大型会员系统。

🌾 技术特点

🌾 代码示例

示例 1:最简开箱即用(一行代码,默认 Cookie 模式)

新建一个空 Web 项目,Nuget 装好 MiniAuth,Program.cs 只需要一行注册:

var builder = WebApplication.CreateBuilder(args); // 一行启动MiniAuth,默认Cookie身份认证 builder.Services.AddMiniAuth(); var app = builder.Build(); app.Run();

运行项目之后访问地址:https://你的地址/miniauth/index.html。默认管理员账号:admin@mini-software.github.io,初始密码一定要登录后第一时间改掉。

给接口加上权限控制:

[ApiController] [Route("api/[controller]")] public class TestController : ControllerBase { [Authorize] // 需要登录才可访问 [HttpGet("hello")] public IActionResult Hello() { return Ok("已成功通过权限校验"); } [Authorize(Roles = "admin")] // 必须admin角色 [HttpGet("adminOnly")] public IActionResult AdminFunc() { return Ok("管理员专属接口"); } }

示例 2:前后端分离,开启 JWT 认证模式

var builder = WebApplication.CreateBuilder(args); builder.Services.AddMiniAuth(options => { //切换成Bearer JWT模式 options.AuthenticationType = MiniAuthOptions.AuthType.BearerJwt; // 务必换成你自己的密钥,生产环境不要写死在代码,放配置文件 options.JWTKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("这里换成你自定义的长密钥")); // 设置Token过期时长,单位秒,这里设1小时 options.TokenExpiresIn = 60 * 60; }); var app = builder.Build(); app.Run();

前端 POST 请求登录接口获取令牌:POST /miniauth/login

{ "username": "admin@mini-software.github.io", "password": "你的密码", "remember": false }

成功返回 accessToken,之后每次请求受保护接口,请求头带上:

Authorization: Bearer 你的accessToken

示例 3:接入你项目现有的 Identity 数据库(老项目兼容)

如果你本身项目已经有一套 Identity、SQLServer 数据库,不想用 MiniAuth 自带的 SQLite 库,就关闭自动初始化,手动指定你的上下文:

var builder = WebApplication.CreateBuilder(args); //你自己原有的Identity配置代码 builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddRoles<IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>(); builder.Services.AddControllersWithViews(); //关闭自动初始化,延后手动挂载 builder.Services.AddMiniAuth(autoUse: false); var app = builder.Build(); //绑定你自己的数据库上下文、用户实体、角色实体 app.UseMiniAuth<ApplicationDbContext, IdentityUser, IdentityRole>(); app.Run();

示例 4:关闭自带登录页,使用你自己的登录页面

builder.Services.AddMiniAuth(options => { //跳转至你项目自己的登录地址 options.LoginPath = "/Identity/Account/Login"; //禁用MiniAuth自带登录接口和页面 options.DisableMiniAuthLogin = true; });

✨ 源码

🌞 最后

看到这里辛苦啦~如果这份.NET 干货帮你搞定了开发难题、打开了新思路,别忘顺手点个赞~你的每一份认可,都是我坚持输出优质内容的底气。技术上有任何疑问、想交流开发思路,随时留言就好。