[关闭]
@aqa510415008 2019-09-17T01:18:44.000000Z 字数 2175 阅读 792

ASF

介绍

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 会自动拦截并且存储。

主要功能:

  1. RBAC 角色权限控制
  2. 审计日志拦截并存储
  3. 支持 Ocelot 所有的功能:服务发现、负载均衡、限流等

RBAC 是什么?

RBAC 是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。

想更细了解 RBAC 请前往:RBAC 介绍 (权限)

数据库迁移

ASF 需要使用数据库存储 API权限、菜单、审计日志、管理账户、账户角色等数据。
ASF 数据存储组件是基于 EntityFrameworkCore 开发的,我们也可以通过 EntityFrameworkCore 的数据迁移功能迁移不同的数据库。

示例:

下面我们使用 SQLServer 来作为 ASF 的数据存储数据库。

  1. SQLServer 数据库中创建一个名为 ASF 的数据库。
  2. 在 ASF 解决方案找到 ASF.Web 项目。
  3. 在项目中找到 Migrations.MigrationsDbContext 文件,修改 OnConfiguring 方法中的数据库连接字符串。

    1. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    2. {
    3. //optionsBuilder.UseSqlite("Data Source=AppData/ASF.db"); //Sqlite 数据库
    4. //optionsBuilder.UseMySql("server=127.0.0.1;database=asf;userid=root;password=root");//MySql 数据库
    5. optionsBuilder.UseSqlServer("Server=127.0.0.1;Database=asf;User ID=SA;Password=sa;Trusted_Connection=false;");
    6. base.OnConfiguring(optionsBuilder);
    7. }
  4. ASF.Web 项目目录下执行 dotnet ef 命令来进行迁移数据库。

    1. dotnet ef migrations add init
    2. dotnet ef database update init

    提示:如果没有 dotnet ef 这个命令那就需要安装,https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

  5. 完成上面所有的步骤之后,查看下面 ASF Config 教程进行启动系统。

配置

ASF Config

配置数据库

ASF.Web 项目中找到 appsettings.json 文件,修改 ASF 节点下面的配置:

  1. "ASF": {
  2. "DBType": "Sqlite", // 数据库类型 Sqlite、Mysql、SqlServer
  3. "DBConnectionString": "Data Source=AppData/ASF.db", // 数据库连接字符串
  4. "AllowCache": true
  5. }

DBType:数据库类型,当前只支持 Sqlite、Mysql、SqlServer 这三种数据库,如果需要其他数据库可以自定义。
DBConnectionString:DBType 数据库的连接字符串。
AllowCache:是否启动数据缓存,缓存账户、角色、权限数据,true 缓存 、false 不缓存。

初始化数据

ASF 会自动检查是否有初始数据,如果没有会自动添加初始数据至数据库中。

如果不需要自动初始化数据库,也可以在 Startup.csConfigure 方法中去掉配置。

  1. app.ASFInitDatabase();

Ocelot Config

ASF 是基于 Ocelot 开发的扩展组件,支持全部 Ocelot 功能和配置,需要配置 Ocelot 网关,在 ASF.Web 项目中找到 ocelot.json 文件,可以参考 Ocelot 官方文档进行配置 。

Ocelot 文档:https://github.com/ThreeMammals/Ocelot

简单使用

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注