@aqa510415008
2019-09-17T01:18:44.000000Z
字数 2175
阅读 792
ASF
是一款基于 Ocelot
开发的后台框架网关也是一个灵活、通用、方便的权限管理系统,在这个系统中,我们对系统的所有资源进行权限控制。
系统的目标就是对应用系统的所有对象资源和数据资源进行权限控制,比如应用系统的功能菜单、各个界面的按钮、数据显示的列以及各种行级数据进行权限的操控。
ASF 提供一套标准的 REST API 进行管理,可以满足跨语言、微服务架构、前后端分离等业务场景。当前只实现基于 Vue.Ant.Design
开发的一套后台管理UI。
预览:http://asf.alingfly.com
账号:admin 密码:admin
相关概念:
1. 菜单:后台树形结构的菜单导航。
2. 权限:功能的权限,ASF 是通过请求 API 来进行控制用户访问权限。
3. 角色:为了方便权限分配,通过创建一个权限组的集合来进行分配给用户。
4. 用户:应用系统的具体操作者
5. 审计:ASF 的审计是自动拦截存储的,后台设置权限的是否记录日志,通过 ASF 网关时候,ASF 会自动拦截并且存储。
主要功能:
RBAC
角色权限控制RBAC 是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。
想更细了解 RBAC 请前往:RBAC 介绍 (权限)
ASF 需要使用数据库存储 API权限、菜单、审计日志、管理账户、账户角色等数据。
ASF 数据存储组件是基于 EntityFrameworkCore
开发的,我们也可以通过 EntityFrameworkCore 的数据迁移功能迁移不同的数据库。
示例:
下面我们使用 SQLServer 来作为 ASF 的数据存储数据库。
SQLServer
数据库中创建一个名为 ASF
的数据库。ASF.Web
项目。在项目中找到 Migrations.MigrationsDbContext
文件,修改 OnConfiguring
方法中的数据库连接字符串。
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//optionsBuilder.UseSqlite("Data Source=AppData/ASF.db"); //Sqlite 数据库
//optionsBuilder.UseMySql("server=127.0.0.1;database=asf;userid=root;password=root");//MySql 数据库
optionsBuilder.UseSqlServer("Server=127.0.0.1;Database=asf;User ID=SA;Password=sa;Trusted_Connection=false;");
base.OnConfiguring(optionsBuilder);
}
在 ASF.Web
项目目录下执行 dotnet ef
命令来进行迁移数据库。
dotnet ef migrations add init
dotnet ef database update init
提示:如果没有 dotnet ef 这个命令那就需要安装,https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet
完成上面所有的步骤之后,查看下面 ASF Config
教程进行启动系统。
在 ASF.Web
项目中找到 appsettings.json
文件,修改 ASF
节点下面的配置:
"ASF": {
"DBType": "Sqlite", // 数据库类型 Sqlite、Mysql、SqlServer
"DBConnectionString": "Data Source=AppData/ASF.db", // 数据库连接字符串
"AllowCache": true
}
DBType:数据库类型,当前只支持 Sqlite、Mysql、SqlServer 这三种数据库,如果需要其他数据库可以自定义。
DBConnectionString:DBType 数据库的连接字符串。
AllowCache:是否启动数据缓存,缓存账户、角色、权限数据,true
缓存 、false
不缓存。
ASF 会自动检查是否有初始数据,如果没有会自动添加初始数据至数据库中。
如果不需要自动初始化数据库,也可以在 Startup.cs
的 Configure
方法中去掉配置。
app.ASFInitDatabase();
ASF 是基于 Ocelot 开发的扩展组件,支持全部 Ocelot 功能和配置,需要配置 Ocelot 网关,在 ASF.Web
项目中找到 ocelot.json
文件,可以参考 Ocelot 官方文档进行配置 。
Ocelot 文档:https://github.com/ThreeMammals/Ocelot