1 Star 6 Fork 1

阿翰 / MiniAuth

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.zh-Hant.md 6.50 KB
一键复制 编辑 原始数据 按行查看 历史

NuGet star GitHub stars version



您的 Star贊助推薦 能幫助 MiniAuth 成長


簡介

MiniAuth 一個輕量 ASP.NET Core Identity Web 後台管理插件

「一行代碼」為「新、舊專案」 添加 Identity 系統跟用戶、權限管理後台 Web UI

開箱即用,避免打掉重寫或是嚴重耦合情況

Image 1 Image 2
Image 3 Image 4

特點

  • 兼容 : Based on JWT, Cookie, Session 只要符合 .NET identity 規格都能使用。
  • 簡單 : 拔插設計,API、MVC、Razor Page 等,都能開箱即用
  • 多平台 : 支持 Linux, macOS
  • 支持多資料庫 : 符合 Identity EF Core 規格的資料庫都能使用

安裝

NuGet 安裝套件

dotnet add package MiniAuth
// or
NuGet\Install-Package MiniAuth

快速開始

在 Startup 添加一行代碼 services.AddMiniAuth() 並運行專案,例子:

    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);

            builder.Services.AddMiniAuth();

            var app = builder.Build();
            app.Run();
        }
    }

預設 admin 管理賬號為 admin@mini-software.github.io 密碼為 E7c4f679-f379-42bf-b547-684d456bc37f (注意記得修改密碼) 管理頁面為 http(s)://yourhost/miniauth/index.html

注意: 如有自己的 identiy auth 請看以下注意點

已有自己的 identity 情況

把 AddMiniAuth autoUse 關閉,將 UseMiniAuth 並在泛型參數換上自己的 IdentityDBContext、用戶、權限認證,放在自己的 Auth 之後,例子:

        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);

            var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
            builder.Services.AddDbContext<ApplicationDbContext>(options =>
                options.UseSqlServer(connectionString));
            builder.Services.AddDatabaseDeveloperPageExceptionFilter();

            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.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
            app.MapRazorPages();

            app.Run();
        }

注意順序

請將 UseMiniAuth 放在路由生成之後,否則系統無法獲取路由數據作權限判斷,如 :

app.UseRouting();
app.UseMiniAuth();

注意: 請添加 Role 規則

請添加 AddRoles<IdentityRole>(),否則 [Authorize(Roles = "權限")] 不會生效

builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddRoles<IdentityRole>() // ❗❗❗ 
    .AddEntityFrameworkStores<ApplicationDbContext>();

關閉 MiniAuth Login

如果你只想用自己的登錄邏輯、頁面、API,可以指定登錄路徑,關閉開關

// 放在 service 註冊之前
MiniAuthOptions.LoginPath = "/Identity/Account/Login";
MiniAuthOptions.DisableMiniAuthLogin = true;

更換資料庫

MiniAuth 系統預設使用 SQLite,無需做任何設定代碼 如果需要切換請在 app.UseMiniAuth 泛型指定不同的資料庫型別。

設定、選項

預設模式

  • MiniAuth 預設模式為IT Admin 集中用戶管理,用戶註冊、密碼重置等操作需要 Admin 權限賬號操作,預設 Role = miniauth-admin

登錄、用戶驗證

非 ApiController 預設登錄導向 login.html 頁面 (判斷方式Headers["X-Requested-With"] == "XMLHttpRequest" 或是 ApiControllerAttribute) ApiController 的 Controller 預設不會導向登錄頁面,而是返回 401 status code

分布式系統

  • 資料庫來源請換成 SQL Server、MySQL、PostgreSQL 等資料庫

修改UI

修改前端

  • 管理後台前端在 /src/Frontend_Identity 主體使用 Vue3 + Vite,使用 npm run build 後即可更新 miniauth 的 UI
  • 登錄頁面不想使用 miniauth 預設, mvc可以使用 identity 自帶的Scaffolded Login.cshtml ,或是更改 miniauth 前端的 login.html, js, css

更新日誌

請查看 Release Notes

TODO

Link : MiniAuth.Identify project

C#
1
https://gitee.com/shps951023/MiniAuth.git
git@gitee.com:shps951023/MiniAuth.git
shps951023
MiniAuth
MiniAuth
main

搜索帮助