云尚办公系统是一套自动办公系统,系统主要包含:管理端和员工端
管理端包含:权限管理、审批管理、公众号菜单管理
员工端采用微信公众号操作,包含:办公审批、微信授权登录、消息推送等功能
项目服务器端架构:SpringBoot + MyBatisPlus + SpringSecurity + Redis + Activiti+ MySQL
前端架构:vue-admin-template + Node.js + Npm + Vue + ElementUI + Axios
核心技术
基础框架:SPRINGBOOT |
---|
数据缓存:Redis |
数据库:MySQL |
权限控制:SpringSecurity |
工作流引擎:Activiti |
前端技术:vue-admin-template + Node.js + Npm + Vue + ElementUI + Axios |
微信公众号:公众号菜单 + 微信授权登录 + 消息推送 |
技术点:
1.MyBatis-Plus
2.权限
页面权限(菜单级)、操作权限(按钮级)、数据权限
3.JWT
JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上。
一个JWT由三个部分组成:JWT头、有效载荷、签名哈希 最后由这三者组合进行base64url编码得到JWT
4.用户登录
通过用户名查询用户信息。
若用户不存在,则抛出异常。
注释掉的代码原本用于密码验证。
检查用户状态,若被禁用则抛出异常。
使用JWT生成token并返回结果。
5.获取用户菜单权限
5.Spring Security
认证”和“授权”
Spring Security进行认证和鉴权的时候,就是利用的一系列的Filter来进行拦截的。
一个请求想要访问到API就会从左到右负责认证,负责异常处理,负责授权的过滤器
用户认证
Authentication
,它存储了认证信息,代表当前登录用户。
我们需要通过 SecurityContext
来获取Authentication
,SecurityContext
就是我们的上下文对象!这个上下文对象则是交由 SecurityContextHolder
进行管理,你可以在程序任何地方使用它:
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
SecurityContextHolder
原理非常简单,就是使用ThreadLocal
来保证一个线程中传递同一个对象!