SpringBoot>15 – 自定义注解实现权限控制

  • Post author:
  • Post category:其他




简介:

较原始的项目中使用的是JSP页面标签结合后台方法上注解配合实现权限控制,目前前后端完全分离开发已经是主流模式,大型的项目中可能会用到 shiro 或者 spring security 做安全校验,但是在小型项目中可以使用自定义注解达到权限控制的要求。

个人学习总结:

链接:【

springboot、springcloud、docker 等,学习目录



误区:

很多人认为权限控制就是控制不同用户在页面上拥有不同的功能(即不同的按钮),这是用户体验范围,这种情况下,只要知道后端地址,还是可以请求到后端数据的。权限控制做的是没有权限就不可以操作数据,即安全问题。



数据库表设计:

1、用户表user,存放不同的用户

2、角色表role,不同的角色(管理员、普通用户…)

3、用户角色表user_role,存放用户和角色之间的关系

4、权限表permission、存放不同的权限(用户的增删改查)

5、角色权限表role_permission,存放不同角色和权限之间的关系

在这里插入图片描述

省略:使用插件生成对应的实体类、mapper、mapper.xml。



对应表的维护

controller service层的建立

1、用户表、代码很简单的CRUD操作,省略。

2、角色表的维护。

/**
* @Auther: xf
* @Date: 2018/11/24 21:35
* @Description: 角色表的维护
*/
@RequestMapping(value = "role")
@RestController
public class RoleController {

   @Autowired
   private RoleService roleService;

   @GetMapping(value={"list"})
   public ApiResult list() {
       List<Role> roleList = roleService.list();
       return ApiResult.ok(roleList);
   }

   @PostMapping(value="save")
   public ApiResult saver(@RequestBody Role role) {
       int result = roleService.save(role);
       return ApiResult.ok(result);
   }

   @GetMapping(value="get/{id}")
   public ApiResult getUser(@PathVariable Integer id) {
       Role role = roleService.get(id);
       return ApiResult.ok(role);
   }

   @PutMapping(value="update")
   public ApiResult putUser(@RequestBody Role role) {
       int result = roleService.update(role);
       return ApiResult.ok(result);
   }

   @DeleteMapping(value="delete/{id}")
   public ApiResult delete(@PathVariable Integer id) {
       int result = roleService.delete(id);
       return ApiResult.ok(result);
   }
}

3、权限表,这张表的维护很多项目都是开发人员直接维护,不暴露给用户。

4、用户角色表维护,CRUD,代码省略。

5、权限角色表维护



版权声明:本文为cp026la原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。