在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
首次訪問時,可以使用預設的管理員賬號
賬號: admin@mini-software.github.io
密碼: 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技術匠] 社群,與其他熱愛技術的同行一起交流心得,共同成長!