首页 > 其他分享 >.NET 开源权限认证项目 MiniAuth上线

.NET 开源权限认证项目 MiniAuth上线

时间:2024-08-06 10:54:30浏览次数:14  
标签:Core 权限 builder 开源 NET MiniAuth options

前言

在Web应用项目中权限认证是个绕不开的话题,传统方法复杂又耗时。MiniAuth推出专为.NET开发者设计的简单、实用的权限认证项目。

MiniAuth,作为ASP.NET Core的插件,让我们快速轻松实现用户登录、权限检查等功能。它支持多种认证方式,如JWT、Cookie,且易于集成到现有项目中。

无论是开发WebAPI 还是MVC应用,MiniAuth都能帮助我们快速搭建起后台管理系统。它简单易用,不改变现有数据库结构,也不增加学习成本。

MiniAuth,让权限管理不再繁琐,快速开发更加高效。快来试试吧!

项目介绍

MiniAuth 一个轻量 ASP.NET Core Identity Web 后台管理中间插件。

「一行代码」为「新、旧项目」 添加 Identity 系统跟用户、权限管理网页后台系统。

开箱即用,避免打掉重写或是严重耦合情况。

项目特点

  • 兼容 : 支持 .NET identity Based on JWT, Cookie, Session 等
  • 简单 : 拔插设计,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

首次访问时,可以使用预设的管理员账号

账号: [email protected]

密码: 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技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

标签:Core,权限,builder,开源,NET,MiniAuth,options
From: https://www.cnblogs.com/1312mn/p/18344646

相关文章

  • 【人工智能LLM】开源 LLM 大模型汇总以及微调策略_有哪些开源的大模型可以微调(1)
    目录前言LLaMA*[stanfordAlpaca](https://blog.csdn.net/qq_36287702/article/details/131138356#stanford_Alpaca_11"stanfordAlpaca")GuanacoVicunaChinese-LLaMA-AlpacaChinese-VicunaLuotuo-ChineseFalcon*[OpenBuddy-Falcon](https://blog.csdn.......
  • Gartner 魔力象限:单一供应商安全访问服务边缘 2024,Palo Alto Networks 再次荣膺领导者
    GartnerMagicQuadrantforSingle-VendorSASE2024Gartner魔力象限:单一供应商安全访问服务边缘2024请访问原文链接:https://sysin.org/blog/gartner-magic-quadrant-single-vendor-sase-2024/,查看最新版。原创作品,转载请保留出处。Gartner魔力象限:单一供应商SASE2024Pu......
  • 1、消息队列框架:Kafka - 开源项目研究文章
    ApacheKafka是一个高性能的分布式发布-订阅消息队列系统,最初由LinkedIn公司开发,并在2010年贡献给了Apache基金会成为顶级开源项目。Kafka的主要应用场景包括日志收集、消息系统、用户活动跟踪、运营指标记录和流式处理等。Kafka的架构包括以下几个核心组件:Topic:......
  • 1、.Net UI框架:Xamarin Forms - .Net宣传系列文章
    Xamarin.Forms是一个跨平台移动应用开发框架,它允许开发者使用C#和.NET进行一次编码,然后在iOS、Android、macOS和Windows等多个平台上运行。Xamarin.Forms是Xamarin的一部分,而Xamarin是微软的.NET跨平台开发工具集,它提供了一套API,可以在不同的设备上创建本地UI。Xama......
  • kubernetes面试
    前言  此面经为企鹅侠自己面试遇到和收集其它朋友提供的信息整理而成,给予大家参考,希望能有所帮助。!!!文档有问题请大家及时指出做修改哈k8s是什么?请说出你的了解?  答:Kubenetes是一个针对容器应用,进行自动部署,弹性伸缩和管理的开源系统。主要功能是生产环境中的......
  • .netCore System.Drawing.Common 发布,在CentOS 运行报错
    centos下要运行 System.Drawing.Common,需要先安装mono的  libgdiplus插件才可以。安装后,还报以下错误的,才是下文的内容。 报错:System.PlatformNotSupportedException:System.Drawing.Commonisnotsupportedonnon-Windowsplatforms.Seehttps://aka.ms/systemdra......
  • 【Kubernetes】应用的部署(一):金丝雀部署
    应用的部署(一):金丝雀部署在项目迭代开发过程中,经常需要对应用进行上线部署。上线部署策略主要有3种:金丝雀部署、蓝绿部署和滚动部署。金丝雀部署也被叫作灰度部署。金丝雀部署过程:先让一部分用户继续使用旧版本,而另一部分用户开始使用新版本;如果新版本没有......
  • 开源文档协作平台比较:哪个最适合你?
    国内外主流的10款开源文档协作平台对比:PingCode、Worktile、蚂蚁笔记(Leanote)、Wizard、Kooteam、ShowDoc、MrDoc、DooTask、语雀、WookTeam。在今天的数字化时代,寻找一个能够提高团队合作效率并确保信息共享流畅的解决方案,成了许多企业和个人的迫切需求。开源文档协作平台以其......
  • kubernetes-存储卷与持久化详解
    目录背景volume介绍emptyDirHostPathNFSconfigMapSecretPersistentVolume介绍PV回收策略PV访问策略基于nfs或nas创建pv创建hostpath类型的pvPV的状态PersistentVolumeClaim创建pvc与pv进行绑定使用pvc动态存储storageclass创建目录nfs添加授权目录创建yaml背景容器部署过程中一......
  • CANopen从站转Profinet从站协议转换网关(通讯配置方法)
    如何实现CANopen网络和Profinet网络的连接互通?不少朋友对此存有疑问,作者在此统一作出回复。实际上,捷米特JM-PN-COP这款设备能够有效地解决这一问题。接下来,作者将为大家详尽地介绍该设备的功能、参数以及配置方式。一、功能概述1.1设备简介捷米特JM-PN-COP是PN(Profinet)......