1 Star 6 Fork 1

阿翰 / MiniAuth

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

NuGet star GitHub stars version



您的 Star赞助推荐 能帮助 MiniAuth 成长


QQ群(1群) : 813100564 / QQ群(2群) : 579033769 / QQ群(3群) : 625362917


简介

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 等数据库

修改前端

  • 管理后台前端在 /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

搜索帮助