# ab-security-jwt **Repository Path**: nibilly/ab-security-jwt ## Basic Information - **Project Name**: ab-security-jwt - **Description**: 【敏捷工作流开发平台—鉴权模块】专业的企业级流程解决方案。 基于activiti5.22, 前后端分离,模块化,超低耦合。零java代码即可做到中国特色复杂业务的流程实施 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: http://doc.agilebpm.cn - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 13 - **Created**: 2018-08-03 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 推荐介绍 ### 敏捷工作流开发平台 https://gitee.com/agile-bpm/agile-bpm-basic 整合了spring4.3.17 mybatis activiti5.22 redis groovy quartz mq atomikos spring security等 ### 敏捷工作流开发平台-移动端 https://gitee.com/agile-bpm/bpm-app 基于VUE2.5 PC在线测试地址(1核Linux机器,部署了一堆东西,略慢请见谅) http://test.agilebpm.cn/login.html 功能缺陷请在项目上创建建 issues **欢迎star** — 鉴权模块 # ab-security-jwt #### 项目介绍 - **通过用户分配角色,角色资源授权,配置的形式实现系统鉴权控制**(非编码鉴权形式)。 - 实现了XSS注入检查 - 防止CSRF攻击 - 提供获取当前登录用户相关信息工具类 - 非jwt版本提供cas单点服务器整合 若当前用户未分配菜单资源,当请求资源时,以及连接下属资源都会被拒绝。 所以需要前端项目通过接口获取当前用户拥有的菜单资源。 #### 软件架构 spring security 4 jjwt 整合 *spring boot 版本整合配置 会在 agilebpm-springboot-starter开发完毕后推出* #### 安装教程 1. 整合web.xml ``` springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* ``` 2. 引入配置文件app-security-jwt.xml 3. 实现接口 - UserService 获取用户信息 - GroupService 获取角色的接口 - SysResourceService 获取用户菜单资源 目前项目依赖agilebpm-sys模块、agilebpm-org模块的接口服务。如果整合自身项目,需要自行提供用户,角色资源的配置信息。 即实现如下功能,并将相关配置信息通过接口提供给 ab-security-jwt ![分配资源](https://images.gitee.com/uploads/images/2018/0725/122712_2e5f9bde_1861740.png "屏幕截图.png") 4. 前端 vue axios整合jwt ``` // 前置设置token Axios.interceptors.request.use(config => { //获取token if (localStorage.token) { config.headers.Authorization = 'Bearer ' + localStorage.token } return config },error =>{ alert("错误的传参", 'fail') return Promise.reject(error) }) // 后置登录失效判断 axios.interceptors.response.use(function(response){ if(response.data && !response.data.isOk && response.data.code==="401" ){ Vue.toLogin(); } return response; },function(error){ //通用异常 return Promise.reject(error); }); ``` 5. 前端angular整合 在 `$httpProvider.interceptors` 中对`request`配置`headers`,`response`中添加`resultData`的全局判断。请参考axios配置 6. 配置 jwt属性 - `jwt.header` :存放 token 的header默认为“Authorization” - `jwt.tokenHead`:token信息的头部字符串 默认为“Bearer ” - `jwt.secret`:密匙 其他配置项可参考`JWTService.java`源码 #### 使用说明 获取token ![输入图片说明](https://images.gitee.com/uploads/images/2018/0725/123757_2ca38cbc_1861740.png "屏幕截图.png") 每次携带token访问 ![输入图片说明](https://images.gitee.com/uploads/images/2018/0725/123821_d4a44faa_1861740.png "屏幕截图.png") ## 其他说明 agilebpm-basic当前版本尚未整合ab-security-jwt模块。 agilebpm 下个版本更新后,就可以直接修改依赖切换鉴权实现了。