功能权限

Function Privilege

选择

权限的选择无非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); }

@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);
    }

登录Token

LoginTokenService中使用了JWT来验证Token

相关数据库表

t_privilege
t_role
t_role_privilege
t_employee


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