# 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

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

每次携带token访问

## 其他说明
agilebpm-basic当前版本尚未整合ab-security-jwt模块。 agilebpm 下个版本更新后,就可以直接修改依赖切换鉴权实现了。