SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

时间:2024-03-29 14:20:02

学习网址:https://www.bilibili.com/video/av75572951?p=255

目录

1、Saas概念

2、Saas权限

3、多租户数据库涉及方案

4、微服务中BaseController的抽取

5、涉及内容

5.1分布式id生成器

5.2权限认证机制

5.3基于JWT实现鉴权

5.4 shiro

5.5 POI海量数据

5.6 人脸登录

5.7结合二维码和手机端人脸识别实现登录

5.8 二维码生成

5.9 Freemarker


1、Saas概念

个人saas产品:在线文档、日常管理、博客管理

企业saas产品:CRM、ERP、OA

 

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

UML

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

 

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

2、Saas权限

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

企业租户一般包含字段:公司名称、公司地址、当前版本、续期时间、到期时间、审核状态、当前余额。

saas管理员维护菜单、按钮、api

菜单:动态加载

按钮:是否有权限 。注:不光前端控制显示不显示,后端也要控制。因为前端通过源码可以改代码

API:API接口 

表设计结构

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

用户-》角色-》权限-》资源

 

3、多租户数据库涉及方案

1、独立数据库

2、共享数据库、独立schema(oracle:oracle用户;mysql database)

3、共享数据库、共享数据表

4、微服务中BaseController的抽取

 视频章节:p52

 

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

---------------------------------------------------------------------------------------------------------------------------

 视频章节:p103

step1、jwt拦截器

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

step2、BaseController

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

step3、UserController

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

 

5、涉及内容

5.1分布式id生成器

方案一:数据库自增

方案二:uuid 太长

方案三:全局redis 网络开销大

方案四:学法算法 twitter 开源 IdWorker

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

 

5.2权限认证机制

1、http Basic Auth 

用户名、密码 原始做法

2、cookie

cookie配合session

3、OAuth

三方授权

4、Token Auth

优点:

1、cookie不支持跨域

2、无状态(怎么区分有无状态,主要体现是否存数据)

3、去耦

4、使用移动端

5.3基于JWT实现鉴权

1、微服务下实现无状态

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

2、实在想在微服务下实现有状态

   结合redis实现

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

   到底1好还是2好见仁见智

 

5.4 shiro

shiro更强大

spring security 对OAuth、OpenId也有支持、Shiro要手动实现

 

5.5 POI海量数据

sxssf对象

5.6 人脸登录

参考百度官方API。其实就是通过照片进行注册、检查、认证等。注意照片有两个方式:一种是真实的png、jpg文件,还有一种是dataurl方式,即:dada:image/png;base64 qwertyuioasdfgh1234sdfxcv

5.7结合二维码和手机端人脸识别实现登录

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战(学习笔记)

5.8 二维码生成

二维码通过zxing生产

5.9 Freemarker

1、动态页面:替换jsp。jsp要通过编译、解析再呈现,Freemarkeru需要减轻服务器压力

2、页面静态化:高并发适用

3、代码生成器:自动根据数据库元数据生产dao层、pojo等代码