前言

在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

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

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

.NET 开源权限认证项目 MiniAuth上线的更多相关文章

  1. 我的开源权限管理项目BeCore (基于.net core开发)

    首先 谢谢大家还记得我.. 新年快乐 祝大家工作顺利 事事顺心 人见人爱 车见车载 冬不寒 下雨有伞 全身哪都不疼 就是有人疼 ~~ Github地址:https://github.com/baby8 ...

  2. Apache Shiro 开源权限框架

    在 Web 项目中应用 Apache Shiro 开源权限框架 Apache Shiro 是功能强大并且容易集成的开源权限框架,它能够完成认证.授权.加密.会话管理等功能.认证和授权为权限控制的核心, ...

  3. Ocelot网关+IdentityServer4实现API权限认证

    Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请求聚合.服务发现.认证.鉴权.限流熔断.并内置了负载均衡器与Service Fabric.Butterfly ...

  4. springboot集成轻量级权限认证框架sa-token

    sa-token是什么? sa-token是一个JavaWeb轻量级权限认证框架,主要解决项目中登录认证.权限认证.Session会话等一系列由此衍生的权限相关业务.相比于其他安全性框架较容易上手. ...

  5. shiro太复杂?快来试试这个轻量级权限认证框架!

    前言 在java的世界里,有很多优秀的权限认证框架,如Apache Shiro.Spring Security 等等.这些框架背景强大,历史悠久,其生态也比较齐全. 但同时这些框架也并非十分完美,在前 ...

  6. SpringBoot 使用 Sa-Token 完成权限认证

    一.设计思路 所谓权限认证,核心逻辑就是判断一个账号是否拥有指定权限: 有,就让你通过. 没有?那么禁止访问! 深入到底层数据中,就是每个账号都会拥有一个权限码集合,框架来校验这个集合中是否包含指定的 ...

  7. 3.jenkins 权限认证与密码设置

    1.前言 在用Jenkins过程中忘记管理员密码和开启权限认证后管理员帐号没有任何权限是经常遇到的情况,最近有好多群友被这个问题困扰.但Jenkins没有提供密码找回的功能,经过一翻探索找到了一种变相 ...

  8. 【Java EE 学习 20】【使用过滤器实现登陆验证、权限认证】【观察者模式和监听器(使用监听器实现统计在线IP、登录IP 、踢人功能)】

    一.使用过滤器实现登录验证.权限认证 1.创建5张表 /*使用过滤器实现权限过滤功能*/ /**创建数据库*/ DROP DATABASE day20; CREATE DATABASE day20; ...

  9. Google开源的Deep-Learning项目word2vec

    用中文把玩Google开源的Deep-Learning项目word2vec   google最近新开放出word2vec项目,该项目使用deep-learning技术将term表示为向量,由此计算te ...

  10. asp.net权限认证篇外:集成域账号登录

    在之前的我们已经讲过asp.net权限认证:Windows认证,现在我们来讲讲域账号登录, 这不是同一件事哦,windows认证更多的是对资源访问的一种权限管控,而域账号登录更多的是针对用户登录的认证 ...

随机推荐

  1. 接口签名规则及Java代码demo实现

    接口签名规则及Java代码demo实现 签名规则 签名生成的通用步骤如下: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用UR ...

  2. STP选举规则

    STP Election Process 802.1D STP ​ 802.1D是第一个生成树版本,不支持VLAN.选举过程如下 选择一个根桥 选择根端口 选择指定端口 选择关闭端口(剩下的最后一个端 ...

  3. Mybatis 判断表达式除坑

    Mybatis 判断表达式经常有各种坑,比如数值的判断,空值的判断坑等,可以通过如下代码测试一下是否符合预期 import org.apache.ibatis.ognl.Ognl; import or ...

  4. 安装tesserocr

    1.下载安装包 这个包不能使用pip安装 可以在这里找到适合自己的版本安装: https://github.com/simonflueckiger/tesserocr-windows_build/re ...

  5. 12-CSS浮动

    01 介绍 02 浮动规则 03 案例练习 3.1 缝隙的解决方案 <!DOCTYPE html> <html lang="en"> <head> ...

  6. P8594 「KDOI-02」一个仇的复

    我会组合数! 首先发现同一列只有被不同的横块填或被一个相同的竖块填,且用竖块填完1列之后,会分成两个封闭的长方形,而长方形内部则用横块来填充. 先考虑一个子问题,某个 \(2 \times n\) 长 ...

  7. Vim编辑的小技巧

    Vim编辑的小技巧 如何快速纠错 Ctrl + h 删除上一个字符, Ctrl + w 删除上一个单词, Ctrl + u 删除当前行. 从编辑模式快速切换到Nornal模式 1.Esc 2.Ctrl ...

  8. python重拾基础第四天

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1. 列表生成式,迭代器&生成器 列表生成式 我现在有个需求, ...

  9. NXP i.MX 8M Plus工业开发板规格书(四核ARM Cortex-A53 + 单核ARM Cortex-M7,主频1.6GHz)

      1 评估板简介 创龙科技TLIMX8MP-EVM是一款基于NXP i.MX 8M Plus的四核ARM Cortex-A53 + 单核ARM Cortex-M7异构多核处理器设计的高性能工业评估板 ...

  10. Java开发常见问题分析和处理方案

    程序Bug的产生,通常分为三种类型 逻辑漏洞: 低级错误,程序执行后无法达到想要效果. 越界访问: 访问了非法区域,造成程序崩溃. 条件考虑不全面: 你以为你万无一失,但你永远都不知道输入参数究竟是什 ...