前言 在Web應用項目中許可權認證是個繞不開的話題,傳統方法複雜又耗時。MiniAuth推出專為.NET開發者設計的簡單、實用的許可權認證項目。 MiniAuth,作為ASP.NET Core的插件,讓我們快速輕鬆實現用戶登錄、許可權檢查等功能。它支持多種認證方式,如JWT、Cookie,且易於集成到現有 ...
在Web應用項目中許可權認證是個繞不開的話題,傳統方法複雜又耗時。MiniAuth推出專為.NET開發者設計的簡單、實用的許可權認證項目。
MiniAuth,作為ASP.NET Core的插件,讓我們快速輕鬆實現用戶登錄、許可權檢查等功能。它支持多種認證方式,如JWT、Cookie,且易於集成到現有項目中。
無論是開發WebAPI 還是MVC應用,MiniAuth都能幫助我們快速搭建起後臺管理系統。它簡單易用,不改變現有資料庫結構,也不增加學習成本。
MiniAuth,讓許可權管理不再繁瑣,快速開發更加高效。快來試試吧!
項目介紹
MiniAuth 一個輕量 ASP.NET Core Identity Web 後臺管理中間插件。
「一行代碼」為「新、舊項目」 添加 Identity 系統跟用戶、許可權管理網頁後臺系統。
開箱即用,避免打掉重寫或是嚴重耦合情況。
項目特點
- 簡單 : 拔插設計,API、MVC、Razor Page 等開箱即用
- 支持多資料庫 : 支持 Oracle, SQL Server, MySQL 等 EF Core
- 非侵入式 : 不影響現有資料庫、項目結構
- 多平臺 : 支持 Linux, macOS 環境
項目使用
MiniAuth作為一個輕量級的ASP.NET Core Identity Web後臺管理插件,其使用過程相對簡單直觀。
下麵是一個基本的使用示例,幫助我們快速集成MiniAuth到ASP.NET Core項目中,具體步驟可以參考。
1、安裝MiniAuth
首先,需要通過NuGet包管理器安裝MiniAuth。
或者在Visual Studio中,打開NuGet包管理器控制台(或使用NuGet包管理器UI),並執行以下命令來安裝MiniAuth:
Install-Package MiniAuth
也可以使用.NET CLI,通過以下命令安裝:
dotnet add package MiniAuth
2、配置MiniAuth
安裝完成後,需要在ASP.NET Core項目的Startup類或Program類(取決於使用的.NET Core版本)中配置MiniAuth。
對於.NET 6 或更高版本,這通常在Program.cs文件中完成配置
public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // 添加MiniAuth服務 builder.Services.AddMiniAuth(); //如果需要自定義配置,如使用JWT認證, builder.Services.AddMiniAuth(options => { options.AuthenticationType = MiniAuthOptions.AuthType.BearerJwt; options.JWTKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("自己的JWT密鑰")); }); var app = builder.Build(); // 其他配置... app.Run(); } }
3、訪問管理頁面
配置完成後,運行當前項目。MiniAuth將自動註冊必要的路由和中間件,並提供一個預設的管理界面。
你可以通過訪問以下URL來訪問管理界面(請根據實際部署情況替換localhost:5000
):
http://localhost:5000/miniauth/index.html
首次訪問時,可以使用預設的管理員賬號
密碼: E7c4f679-f379-42bf-b547-684d456bc37f (請記得修改密碼)
即可管理你的 Identity 用戶、角色、端點。
4、許可權管理
MiniAuth提供了用戶、角色和許可權的管理功能。可以通過管理界面來創建新用戶、分配角色以及管理許可權。
對於需要許可權控制的API或頁面,可以在相應的控制器或方法上使用[Authorize]屬性或[Authorize(Roles = "角色名")]屬性來限制訪問。
5、自定義和擴展
MiniAuth提供了靈活的擴展點,可以根據項目需求進行自定義。通過實現或擴展MiniAuth提供的介面和類來定製認證流程、用戶數據存儲等。
- MiniAuth Cookie Identity
MiniAuth 預設為單體 Coookie Based identity,如前後端分離項目請更換 JWT 等 Auth。
- MiniAuth JWT Identity
指定 AuthenticationType 為 BearerJwt
var builder = WebApplication.CreateBuilder(args); builder.Services.AddMiniAuth(options:(options) => { options.AuthenticationType = AuthType.BearerJwt; });
請記得自定義 JWT Security Key,如:
var builder = WebApplication.CreateBuilder(args); builder.Services.AddMiniAuth(options: (options) => { options.JWTKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("6ee3edbf-488e-4484-9c2c-e3ffa6dcbc09")); });
- MiniAuth 預設模式
為IT Admin 集中用戶管理,用戶註冊、密碼重置等操作需要 Admin 許可權賬號操作,預設 Role = miniauth-admin
- 關閉 MiniAuth Login
如果你只想用自己的登錄邏輯、頁面、API,可以指定登錄路徑,關閉開關
// 放在 service 註冊之前 builder.Services.AddMiniAuth(options: (options) => { options.LoginPath = "/Identity/Account/Login"; options.DisableMiniAuthLogin = true; });
- 自定義預設的 SQLite Connection String
builder.Services.AddMiniAuth(options: (options) => { options.SqliteConnectionString = "Data Source=miniauth_identity.db"; });
- 自定義資料庫、用戶、角色
MiniAuth 系統預設使用 SQLite EF Core、IdentityUser、IdentityRole開箱即用 如果需要切換請在 app.UseMiniAuth
泛型指定不同的資料庫、自己的用戶、角色類別。
app.UseMiniAuth<YourDbContext, YourIdentityUser, YourIdentityRole>();
註意事項
1、確保項目已經安裝了ASP.NET Core Identity相關的包,因為MiniAuth是基於ASP.NET Core Identity構建的。
2、根據項目需求,選擇合適的認證方式(如JWT、Cookie等)。
3、註意順序,請將 UseMiniAuth 放在路由生成之後,否則系統無法獲取路由數據作許可權判斷,如 :
app.UseRouting();
app.UseMiniAuth();
4、請添加 Role 規則
請添加 AddRoles<IdentityRole>(),否則 [Authorize(Roles = "許可權")] 不會生效
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddRoles<IdentityRole>() // ❗❗❗ .AddEntityFrameworkStores<ApplicationDbContext>();
項目地址
Github:https://github.com/mini-software/MiniAuth
Gitee:https://gitee.com/dotnetchina/MiniAuth
如果你覺得這篇文章對你有幫助,不妨點個贊支持一下!你的支持是我繼續分享知識的動力。如果有任何疑問或需要進一步的幫助,歡迎隨時留言。
也可以加入微信公眾號 [DotNet技術匠] 社區,與其他熱愛技術的同行一起交流心得,共同成長!