Spring Security 对资源的访问权限控制
资源访问权限控制涉及到的表除了上篇的用户表、角色表,用户角色中间表,这里还得加上资源表,和资源角色中间表,资源表存的都是Controller中接口的访问URL,资源角色中间表则将资源和角色关联起来。
资源表:
资源角色中间表
1.建表Sql
/*
Navicat Premium Data Transfer
Source Server : 本地MySql
Source Server Type : MySQL
Source Server Version : 50721
Source Host : localhost:3306
Source Schema : permission
Target Server Type : MySQL
Target Server Version : 50721
File Encoding : 65001
Date: 03/05/2020 19:00:36
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for menu
-- ----------------------------
DROP TABLE IF EXISTS `menu`;
CREATE TABLE `menu` (
`id` int(11) NOT NULL,
`pattern` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of menu
-- ----------------------------
INSERT INTO `menu` VALUES (1, '/db/**');
INSERT INTO `menu` VALUES (2, '/admin/**');
INSERT INTO `menu` VALUES (3, '/user/**');
-- ----------------------------
-- Table structure for menu_role
-- ----------------------------
DROP TABLE IF EXISTS `menu_role`;
CREATE TABLE `menu_role` (
`id` int(11) NOT NULL,
`mid` int(11) NULL DEFAULT NULL,
`rid` int(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of menu_role
-- ----------------------------
INSERT INTO `menu_role` VALUES (1, 1, 1);
INSERT INTO `menu_role` VALUES (2, 2, 2);
INSERT INTO `menu_role` VALUES (3, 3, 3);
SET FOREIGN_KEY_CHECKS = 1;
2.资源表实体
Menu
/**
* @Author:lvyuanjie
* @Date:2020/5/3 19:16
*/
public class Menu {
private Integer id;
private String pattern;
private List<Role> roles;
//省略getter ,setter
}
3.MenuMapper 和 MenuMapper.xml
/**
* @Author:lvyuanjie
* @Date:2020/5/3 19:19
*/
public interface MenuMap