### 1. 架构预览 ![](https://pic.52lhd.com/blog/20191229155445331.png) 大家可以看到单机版的前后分离RBAC系统主要包括 - 客户端(PC、IOS、安卓、小程序、H5) - Nginx反向代理 - 后端服务(Security鉴权、Restful接口、服务层) 很好的理解为一个普通的单机服务重点在于安全权限这一块其他的没什么了 ### 2.技术栈 ![](https://pic.52lhd.com/blog/20191229155927050.png) 所用到的技术栈都是最常使用的 #### 前端: - Vue + vue-cli + Vue-Router + vuex + axios - vue-cli:搭建基本的vue项目骨架,脚手架工具 - vuex:管理复杂的数据流向,状态机工具,特化的Flux - vue-router:实现SPA间“页面”之间的跳转 - axios:http工具,实现向API请求数据,以及拦截器的实现 #### 后端: - 基于 Spring Boot 2.2.2 、Spring Security 的RBAC权限管理系统 - 基于 Vue UI框架 Element-ui组件开发 - 基于 Mybatis Plus 简化开发、数据隔离等 - 项目均使用 Lambda 、Stream Api 的风格编码 - 基于 Spring Social 的第三方社交登录无缝对接spring security - 基于ELK+filebeat实现日志管理系统 ### 3. 系统概要 #### 3.1.权限管理 ##### 3.1.1.为什么需要权限管理? 安全性:误操作,人为破坏,数据泄露等 数据隔离:不同权限能看到及操作不同的数据 明确职责:运营,客服等不同角色,等级不同 ##### 3.1.2.权限管理的核心是什么? 1.用户-权限:人员少,功能固定,或特别简单的系统 2.RBAC:用户-角色-权限  所有系统都适用 ![](https://pic.52lhd.com/blog/20191229160411694.png) #### 3.2.权限框架 ![](https://pic.52lhd.com/blog/20191229160524387.png) Spring Security是一套安全框架,可以基于RBAC(基于角色的权限控制)对用户的访问权限进行控制 主要是认证和验证 Basic 认证:Basic 认证是HTTP 中非常简单的认证方式,因为简单, 所以不是很安全,不过仍然非常常用。 Digest 认证:客户端请求资源->服务器返回认证标示-> 客户端发送认证信息->服务器查验认证, 如果成功则继续资源传送,否则直接断开连接。 x.509认证:数字认证 LDAP 认证:LDAP认证是通过WSS3.0加上轻量目录LDAP 协议搭建的种认证方式,使用https加密传输, 主要用于做文档管理。 From 认证:表单认证 #### 3.3.登录认证流程图 ![](https://pic.52lhd.com/blog/20191229160747067.png) #### 3.4 权限认证流程图 ![](https://pic.52lhd.com/blog/20191229160746698.png)