mall项目技术栈
mall项目 数据库表
ums_admin:后台用户表ums_role:后台用户角色表ums_permission:后台用户权限表ums_admin_role_relation:后台用户和角色关系表,用户与角色是多对多关系ums_role_permission_relation:后台用户角色和权限关系表,角色与权限是多对多关系ums_admin_permission_relation:后台用户和权限关系表(除角色中定义的权限以外的加减权限),加权限是指用户比角色多出的权限,减权限是指用户比角色少的权限
Swagger-UI
-
Swagger-UI是HTML, Javascript, CSS的一个集合,可以动态地根据注解生成在线API文档。
-
常用注解
@Api:用于修饰Controller类,生成Controller相关文档信息@ApiOperation:用于修饰Controller类中的方法,生成接口方法相关文档信息@ApiParam:用于修饰接口中的参数,生成接口参数相关文档信息@ApiModelProperty:用于修饰实体类的属性,当实体类是请求参数或返回结果时,直接生成相关文档信息
SpringSecurity
SpringSecurity是一个强大的可高度定制的认证和授权框架,对于Spring应用来说它是一套Web安全标准。SpringSecurity注重于为Java应用提供认证和授权功能,像所有的Spring项目一样,它对自定义需求具有强大的扩展性。
- JWT
JWT是
JSON WEB TOKEN的缩写,它是基于 RFC 7519 标准定义的一种可以安全传输的的JSON对象,由于使用了数字签名,所以是可信任和安全的。
JWT的组成
JWT token的格式:header.payload.signature
header中用于存放签名的生成算法
{"alg": "HS512"}
payload中用于存放用户名、token的生成时间和过期时
{"sub":"admin","created":1489079981393,"exp":1489684781}
signature为以header和payload生成的签名,一旦header和payload被篡改,验证将失败 //secret为加密算法的密钥
String signature = HMACSHA512(base64UrlEncode(header) + "." +base64UrlEncode(payload),secret)
JWT实例 这是一个JWT的字符串
eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImNyZWF0ZWQiOjE1NTY3NzkxMjUzMDksImV4cCI6M时间元素 可出现的字符 有效数值范围MzkyNX0.d-iki0193X0bBOETf2UN3r3PotNIEAV7mzIxxeI5IxFyzzkOZxS0PGfF_SK6wxCv2K8S0cZjMkv6b5bCqc0VBw
Cron表达式
-
Cron表达式
- Cron表达式是一个字符串,包括6~7个时间元素,在SpringTask中可以用于指定任务的执行时间。
-
Cron的语法格式
- Seconds Minutes Hours DayofMonth Month DayofWeek
-
Cron格式中每个时间元素的说明
| 时间元素 | 可出现的字符 | 有效数值范围 |
|---|---|---|
| Seconds | , - * / | 0-59 |
| Minutes | , - * / | 0-59 |
| Hours | , - * / | 0-23 |
| DayofMonth | , - * / ? L W | 0-31 |
| Month | , - * / | 1-12 |
| DayofWeek | , - * / ? L # | 1-7或SUN-SAT |
- Cron格式中特殊字符说明
| 字符 | 作用 | 举例 |
|---|---|---|
| , | 列出枚举值 | 在Minutes域使用5,10,表示在5分和10分各触发一次 |
| - | 表示触发范围 | 在Minutes域使用5-10,表示从5分到10分钟每分钟触发一次 |
| * | 匹配任意值 | 在Minutes域使用*, 表示每分钟都会触发一次 |
| / | 起始时间开始触发,每隔固定时间触发一次 | 在Minutes域使用5/10,表示5分时触发一次,每10分钟再触 发一次 |
| ? | 在DayofMonth和DayofWeek中,用于匹配任意值 | 在DayofMonth域使用?,表示每天都触发一次 |
| # | 在DayofMonth中,确定第几个星期几 | 1#3表示第三个星期日 |
| L | 表示最后 | 在DayofWeek中使用5L,表示在最后一个星期四触发 |
| W | 表示有效工作日(周一到周五) | 在DayofMonth使用5W,如果5日是星期六,则将在最近的工作日4日触发一次 |
常见注解
- 方法 @RequestMapping(value = "/update/{id}", method = RequestMethod.POST)
- 方法 @ResponseBody
- 方法参数 @PathVariable("id") Long id
- 方法参数 @RequestParam(value = "pageSize", defaultValue = "3") Integer pageSize
- 方法参数 @RequestBody PmsBrand pmsBrand
OSS
阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。OSS可用于图片、音视频、日志等海量文件的存储。各种终端设备、Web网站程序、移动应用可以直接向OSS写入或读取数据。
Endpoint:访问域名,通过该域名可以访问OSS服务的API,进行文件上传、下载等操作。Bucket:存储空间,是存储对象的容器,所有存储对象都必须隶属于某个存储空间。Object:对象,对象是 OSS 存储数据的基本单元,也被称为 OSS 的文件。AccessKey:访问密钥,指的是访问身份验证中用到的 AccessKeyId 和 AccessKeySecret。
待查询学习问题
- BindingResult result 校验
- mybatis Example 代码生成
- 跨域问题