多租户认证tortoise-tenant-service服务的使用

(一)租户系统设计四要素关系图

(二)多租户系统串接流程

(三)docker部署tortoise-tenant-service服务与tortoise-tenant-web客户端环境

docker下载: docker pull lqliuqiang/tortoise-tenant-service:1.3.1

1.数据库文件: 在 GitHub - LQliuqiang/docker-tortoise-tenant-service: tortoise-tenant-service的docker容器服务的volume加载卷 对应版本目录下下载 tortoise-tenant.sql文件

2.容器加载卷:在 https://github.com/LQliuqiang/docker-tortoise-tenant-service 对应版本目录下下载

3.启动命令: docker run --name tortoiseTenantService -p 8088:8088 -v /opt/tortoise-tenant-service/config:/opt/tortoise-tenant-service/config -v /opt/tortoise-tenant-service/tortoiseFile:/opt/tortoiseFile -d tortoise-tenant-service:1.3.1

4.部署tortoise-tenant-web多租户服务的客户端

1) 在 GitHub - LQliuqiang/docker-tortoise-tenant-service: tortoise-tenant-service的docker容器服务的volume加载卷 对应版本目录下下载tortoise-tenant-web目录并放入到/opt目录下
2) 修改/opt/tortoise-tenant-web/html/dist/static/js目录下的app.d952f902eccda9606287.js文件中的 “http://localhost:8088/tortoise” 地址为自己部署的tortoise-tenant-service服务的地址
3) 下载nginx镜像
4) 启动 tortoise-tenant-web 客户端
docker run --name tortoiseTenantWeb -p 8083:80 -v /opt/tortoise-tenant-web/html:/usr/share/nginx/html -v /opt/tortoise-tenant-web/nginx.conf:/etc/nginx/nginx.conf:ro -v /opt/tortoise-tenant-web/conf.d:/etc/nginx/conf.d -d nginx

5.访问地址:http://tortoise-tenant-web服务地址:8083(默认管理员用户名与密码:tortoise)

(四)application.yml配置文件加密参数解释(可以采用默认值)

三种加密模式注意项(xxx-des-mode):IvParameterSpec模式与SecureRandom模式不限制secret-token-key与secret-password-key值的长度,python模式限制secret-token-key与secret-password-key值的长度只能为8位

auth-args:
  secret-token-key: auth2090 #DES token验证令牌加密公钥
  secret-password-key: authTenant2090 #DES 密码验证令牌加密公钥
  token-invalid-time: 4200 #token验证过期时间(单位:秒)
  split-symbol: Symbol #(注:固定值,不可变)
  token-des-mode: python #token加密模式
  pwd-des-mode: SecureRandom #密码加密模式
  file-path: /opt/tortoiseFile #文件存储地址 (注:固定值,不可变)

(五)客户端用户登录API接口调用

请求地址:/tortoise/user/auth

请求方式:POST

请求参数类型:json对象

请求参数:

参数

参数描叙

限制

username

用户名

6~16位

password

密码

8~20位

返回结果:

***数据不变值字段:permissionTag与permissionType

permissionTags

该用户所拥有所有权限标记的字符串集合

permissionTypes

该用户所拥有所有权限类型的字符串集合

tokenValue

Token值

object

该用户详细信息

username

用户名

firstName

中文名

lastName

英文名

duty

职位

phone

电话号码

company

公司

email

邮箱

status

用户状态

tenantId

租户id

roleInfos

角色信息

roleDesc

描叙

roleName

名称

roleTag

标记

roleType

类型

permissionInfos

权限

(六)后端服务集成使用(依赖springboot-dagger-x)

<!-- https://mvnrepository.com/artifact/com.github.LQliuqiang/springboot-dagger-x -->
<dependency>
    <groupId>com.github.LQliuqiang</groupId>
    <artifactId>springboot-dagger-x</artifactId>
    <version>1.4.RELEASE</version>
</dependency>

在springboot的application启动文件的目录下同级包下编写一个Main.java文件,内容如下

public class Main {

    public static void main(String[] args) throws Exception {
        //指定自己项目mysql的链接地址
        JdbcConfigEntity jdbcConfigEntity = new JdbcConfigEntity.Builder("root", "123456", "spring_dagger")
                .url("10.124.132.49",3306)
                .build();
        //实例化SpringBootCli
        SpringBootCli springBootCli = new SpringBootCli.Builder(Main.class, jdbcConfigEntity).build();
        //项目集成tortoise-tenant-service服务
        springBootCli.useTortoise(true);
    }

}

 后端服务集成后需要在后端服务的application.yml配置文件中添加如下配置

auth-args:
  secret-token-key: auth2090 #要与tortoise-tenant-service服务下配置文件中secret-token-key值一致
  split-symbol: Symbol #要与tortoise-tenant-service服务下配置文件中split-symbol值一致
  decrypt-mode: python #token的加密模式,要与tortoise-tenant-service服务下配置文件中token-des-mode值一致
  exclude-url-paths: /test2,/test3 #配置过滤不拦截的接口地址

后端服务接口权限拦截的使用(权限添加与配置在tortoise-tenant-web租户管理前端中添加与赋值)

import com.lq.tortoise.present.RequiredPermission;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @GetMapping("/test")
    //配置拦截的接口所需要的权限,此权限值在多租户认证系统中已添加注册
    @RequiredPermission("BIG_DATA_DESIGN") 
    public String test()
    {
        return "call test";
    }

    @GetMapping("/test2")
    public String test2()
    {
        return "call test2";
    }

}

注:项目发布打包发布时,可以将springboot-dagger-x依赖给注释掉

项目源码地址:https://github.com/LQliuqiang/tortoise-tenant-serviceicon-default.png?t=LA92https://github.com/LQliuqiang/tortoise-tenant-service

https://github.com/LQliuqiang/tortoise-tenant-webicon-default.png?t=LA92https://github.com/LQliuqiang/tortoise-tenant-web 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 对于tortoise-orm与sqlalchemy的使用Tortoise ORM 用于快速构建 ORM 层,可以让你使用 Python 代码来实现数据库操作,而 SQLAlchemy 则是一个 Python 数据库访问库,可以用于访问不同的关系数据库,包括 Postgres、MySQL、Oracle 等。 ### 回答2: Tortoise-ORM和SQLAlchemy都是Python编程中常用的对象关系映射(ORM)工具,用于简化与数据库的交互。下面是关于这两个工具的使用的一些说明: 1. Tortoise-ORM是一个基于异步操作的ORM框架,使用Python 3.7+版本。它支持多种数据库后端,如MySQL、PostgreSQL和SQLite等。Tortoise-ORM提供了通过定义模型类来映射数据库表,并自动创建表、插入、查询和更新数据等操作的功能。它还支持事务操作和异步查询等高级特性。 2. SQLAlchemy是一个功能强大的Python ORM库,支持多个数据库后端,如MySQL、PostgreSQL、SQLite和Oracle等。它提供了两种不同的查询语言,一种是SQL表达式语言,另一种是ORM模型类的形式。使用SQLAlchemy,可以通过定义模型类来映射数据库表,实现CRUD操作,并支持复杂的查询和多表联接等操作。 Tortoise-ORM和SQLAlchemy都有各自的特点和优势,适用于不同的场景和需求。Tortoise-ORM是一个轻量级的ORM框架,适用于异步编程和小型项目,它提供了更简单和直观的API,并简化了与异步框架的集成。SQLAlchemy则更加成熟和强大,适用于复杂的数据操作和大型项目。它提供了更多的灵活性和可定制性,使开发者能够更细粒度地控制数据库操作。 总体来说,无论是Tortoise-ORM还是SQLAlchemy,它们都能够简化与数据库的交互,提高开发效率。选择哪个工具取决于具体项目需求和个人偏好。 ### 回答3: Tortoise-ORM和SQLAlchemy是两个Python中的ORM(对象关系映射)库,用于管理和操作关系数据库。 Tortoise-ORM是一个异步IO框架下的ORM库,专门针对Tortoise-ORM的异步IO特性进行了优化。它提供了简单易用的API,可以使用Python的异步IO库asyncio进行数据库操作。Tortoise-ORM支持多种数据库后端,包括SQLite、MySQL和PostgreSQL等。它支持自动生成数据库模式、提供了ORM模型定义和查询API,并且可以更加高效地进行关系型数据库的操作。 SQLAlchemy是一个功能强大的ORM库,它也支持多种关系型数据库后端。SQLAlchemy提供了一种SQL表达式语言(SQL Expression Language),使得开发者可以使用Python代码来生成复杂的SQL查询语句,这些查询语句可以直接映射到数据库进行运行。SQLAlchemy还提供了ORM映射配置工具,可以方便地将数据库表映射到Python类,并且支持多种查询方式和事务操作。 Tortoise-ORM与SQLAlchemy在功能和用法上有一些区别。Tortoise-ORM更加适合异步IO的应用程序,它的API设计更加简单干净,操作数据库更加高效。相比之下,SQLAlchemy提供了更多的功能和灵活性,但在性能上相对较差。 总而言之,Tortoise-ORM和SQLAlchemy都是非常优秀的ORM库,可以用于开发各种类型的关系型数据库应用程序。开发者可以根据自己的需求和偏好选择合适的库进行使用
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值