功能权限

9/7/2021

# 选择

权限的选择无非3种:

  1. shiro
  2. spring security
  3. 自我实现一个注解

这里不讨论哪个框架的好坏,只挑最适合团队的。 我们选择了第三种,原因就是图个简单,很容易和前端的权限配合,方便,节省时间,早点下班。

# 思想

功能权限就是能不能访问controller中的method方法(其实和判断是否有url权限道理是一个样)。

  1. 使用HandlerInterceptorAdapter拦截所有api请求
  2. 判断用户是否有访问controller权限
  3. 判断用户是否有访问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

# @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

# 登录Token

LoginTokenService中使用了JWT来验证Token

# 相关数据库表

t_privilege t_role t_role_privilege t_employee


作者简介: 卓大 (opens new window), 1024创新实验室主任,混迹于各个技术圈,熟悉点java,略懂点前端。

加“卓大”微信,入群 关注 1024创新实验室! 我要请 1024创新实验室 喝胡辣汤~