# 选择
权限的选择无非3种:
- shiro
- spring security
- 自我实现一个注解
这里不讨论哪个框架的好坏,只挑最适合团队的。 我们选择了第三种,原因就是图个简单,很容易和前端的权限配合,方便,节省时间,早点下班。
# 思想
功能权限就是能不能访问controller中的method方法(其实和判断是否有url权限道理是一个样)。
- 使用
HandlerInterceptorAdapter
拦截所有api请求 - 判断用户是否有访问controller权限
- 判断用户是否有访问method权限
# 拦截器
请看SmartAuthenticationInterceptor
类,类中详细注解
# @NoNeedLogin注解
默认所有的请求都需要登录(即携带合法token进行请求),所以如果有些请求不需要登录的话,可以在method或者controller上添加@NoNeedLogin
注解
@ApiOperation(value = "系统文件下载通用接口(流下载)")
@GetMapping("/api/file/downLoad")
@NoNeedLogin
public ResponseEntity<byte[]> downLoadById(Long id, HttpServletRequest request) {
return fileService.downLoadById(id, request);
}
1
2
3
4
5
6
2
3
4
5
6
# @NoValidPrivilege注解
默认所有的token请求都需要被验证权限,所以如果有些请求不需要验证权限的话,可以在method或者controller上添加@NoValidPrivilege
注解
@ApiOperation(value = "分页查询全部消息", notes = "@author yandanyang")
@PostMapping("/notice/page/query")
@NoValidPrivilege
public ResponseDTO<PageResultDTO<NoticeVO>> queryByPage(@RequestBody NoticeQueryDTO queryDTO) {
return noticeService.queryByPage(queryDTO);
}
1
2
3
4
5
6
2
3
4
5
6
# 登录Token
在LoginTokenService
中使用了JWT来验证Token
# 相关数据库表
t_privilege t_role t_role_privilege t_employee
作者简介: 卓大 (opens new window), 1024创新实验室主任,混迹于各个技术圈,熟悉点java,略懂点前端。
![]() | ![]() | ![]() |
加“卓大”微信,入群 | 关注 1024创新实验室! | 我要请 1024创新实验室 喝胡辣汤~ |