SpringSecurity4教程
由於B站up主未提供資料,個人整理,主要看代碼理解
一、SpringSecurity入門開發
思維導圖
[外鏈圖片轉存失敗(img-Yvr4Iavv-1568698216549)(https://www.iliutao.com/upload/2019/9/p1-c15be4c5161b4c7eb2bf47e98bfc516a.png)]
1.SpringSecurity框架簡介
[外鏈圖片轉存失敗(img-cqiQ3NOF-1568698216550)(https://www.iliutao.com/upload/2019/9/p2-9f562bb78101491e982eb572f25bc0a0.png)]
2.security和shiro對比
[外鏈圖片轉存失敗(img-azc3uPR7-1568698216552)(https://www.iliutao.com/upload/2019/9/p4-d84b5ff42ac1407cb71ceb8472939b97.png)]
3.搭建工程
4.HttpBasic方式的權限實現
5.FormLogin方式的權限實現
6.執行原理分析
進入springmvc之前原理過濾器鏈裏各種過濾器 斷點測試
[外鏈圖片轉存失敗(img-9X43hXPC-1568698216553)(https://www.iliutao.com/upload/2019/9/p5-e745142689934d6f8fd0ddbd8631501f.png)]
7.自定義登錄頁面、登錄請求
認證內存硬編碼、自定義數據UserDetailService查數據庫賬戶和角色、跨站處理、自定義錯誤、前後端分離異步客戶端錯誤處理
二、SpringSecurity+SSM權限管理
[外鏈圖片轉存失敗(img-PvCet9Gk-1568698216554)(https://www.iliutao.com/upload/2019/9/p6-bb46d339eb7b4768addfdbce493ad983.png)]
1.數據庫設計
/*
Navicat MySQL Data Transfer
Source Server : localhost_3306
Source Server Version : 50620
Source Host : localhost:3306
Source Database : ssm_security
Target Server Type : MYSQL
Target Server Version : 50620
File Encoding : 65001
Date: 2019-08-09 12:47:51
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for ums_admin
-- ----------------------------
DROP TABLE IF EXISTS `ums_admin`;
CREATE TABLE `ums_admin` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(64) DEFAULT NULL,
`password` varchar(64) DEFAULT NULL,
`icon` varchar(500) DEFAULT NULL COMMENT '頭像',
`email` varchar(100) DEFAULT NULL COMMENT '郵箱',
`nick_name` varchar(200) DEFAULT NULL COMMENT '暱稱',
`note` varchar(500) DEFAULT NULL COMMENT '備註信息',
`create_time` datetime DEFAULT NULL COMMENT '創建時間',
`login_time` datetime DEFAULT NULL COMMENT '最後登錄時間',
`status` int(1) DEFAULT '1' COMMENT '帳號啓用狀態:0->禁用;1->啓用',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='後臺用戶表';
-- ----------------------------
-- Records of ums_admin
-- ----------------------------
INSERT INTO `ums_admin` VALUES ('1', 'test', '$2a$10$NZ5o7r2E.ayT2ZoxgjlI.eJ6OEYqjH7INR/F.mXDbjZJi9HF0YCVG', 'http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/images/20180607/timg.jpg', null, '測試賬號', null, '2018-09-29 13:55:30', '2018-09-29 13:55:39', '1');
INSERT INTO `ums_admin` VALUES ('3', 'admin', '$2a$10$NZ5o7r2E.ayT2ZoxgjlI.eJ6OEYqjH7INR/F.mXDbjZJi9HF0YCVG', 'http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/images/20190129/170157_yIl3_1767531.jpg', '[email protected]', '系統管理員', '系統管理員', '2018-10-08 13:32:47', '2019-03-20 15:38:50', '1');
-- ----------------------------
-- Table structure for ums_admin_role_relation
-- ----------------------------
DROP TABLE IF EXISTS `ums_admin_role_relation`;
CREATE TABLE `ums_admin_role_relation` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`admin_id` bigint(20) DEFAULT NULL,
`role_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='後臺用戶和角色關係表';
-- ----------------------------
-- Records of ums_admin_role_relation
-- ----------------------------
INSERT INTO `ums_admin_role_relation` VALUES ('13', '3', '1');
INSERT INTO `ums_admin_role_relation` VALUES ('15', '3', '2');
INSERT INTO `ums_admin_role_relation` VALUES ('16', '3', '4');
-- ----------------------------
-- Table structure for ums_permission
-- ----------------------------
DROP TABLE IF EXISTS `ums_permission`;
CREATE TABLE `ums_permission` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`pid` bigint(20) DEFAULT NULL COMMENT '父級權限id',
`name` varchar(100) DEFAULT NULL COMMENT '名稱',
`value` varchar(200) DEFAULT NULL COMMENT '權限值',
`icon` varchar(500) DEFAULT NULL COMMENT '圖標',
`type` int(1) DEFAULT NULL COMMENT '權限類型:0->目錄;1->菜單;2->按鈕(接口綁定權限)',
`uri` varchar(200) DEFAULT NULL COMMENT '前端資源路徑',
`status` int(1) DEFAULT NULL COMMENT '啓用狀態;0->禁用;1->啓用',
`create_time` datetime DEFAULT NULL COMMENT '創建時間',
`sort` int(11) DEFAULT NULL COMMENT '排序',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COMMENT='後臺用戶權限表';
-- ----------------------------
-- Records of ums_permission
-- ----------------------------
INSERT INTO `ums_permission` VALUES ('1', '0', '商品', null, null, '0', null, '1', '2018-09-29 16:15:14', '0');
INSERT INTO `ums_permission` VALUES ('2', '1', '商品列表', 'pms:product:read', null, '1', '/pms/product/index', '1', '2018-09-29 16:17:01', '0');
INSERT INTO `ums_permission` VALUES ('3', '1', '添加商品', 'pms:product:create', null, '1', '/pms/product/add', '1', '2018-09-29 16:18:51', '0');
INSERT INTO `ums_permission` VALUES ('4', '1', '商品分類', 'pms:productCategory:read', null, '1', '/pms/productCate/index', '1', '2018-09-29 16:23:07', '0');
INSERT INTO `ums_permission` VALUES ('5', '1', '商品類型', 'pms:productAttribute:read', null, '1', '/pms/productAttr/index', '1', '2018-09-29 16:24:43', '0');
INSERT INTO `ums_permission` VALUES ('6', '1', '品牌管理', 'pms:brand:read', null, '1', '/pms/brand/index', '1', '2018-09-29 16:25:45', '0');
INSERT INTO `ums_permission` VALUES ('7', '2', '編輯商品', 'pms:product:update', null, '2', '/pms/product/updateProduct', '1', '2018-09-29 16:34:23', '0');
INSERT INTO `ums_permission` VALUES ('8', '2', '刪除商品', 'pms:product:delete', null, '2', '/pms/product/delete', '1', '2018-09-29 16:38:33', '0');
INSERT INTO `ums_permission` VALUES ('9', '4', '添加商品分類', 'pms:productCategory:create', null, '2', '/pms/productCate/create', '1', '2018-09-29 16:43:23', '0');
INSERT INTO `ums_permission` VALUES ('10', '4', '修改商品分類', 'pms:productCategory:update', null, '2', '/pms/productCate/update', '1', '2018-09-29 16:43:55', '0');
INSERT INTO `ums_permission` VALUES ('11', '4', '刪除商品分類', 'pms:productCategory:delete', null, '2', '/pms/productAttr/delete', '1', '2018-09-29 16:44:38', '0');
INSERT INTO `ums_permission` VALUES ('12', '5', '添加商品類型', 'pms:productAttribute:create', null, '2', '/pms/productAttr/create', '1', '2018-09-29 16:45:25', '0');
INSERT INTO `ums_permission` VALUES ('13', '5', '修改商品類型', 'pms:productAttribute:update', null, '2', '/pms/productAttr/update', '1', '2018-09-29 16:48:08', '0');
INSERT INTO `ums_permission` VALUES ('14', '5', '刪除商品類型', 'pms:productAttribute:delete', null, '2', '/pms/productAttr/delete', '1', '2018-09-29 16:48:44', '0');
INSERT INTO `ums_permission` VALUES ('15', '6', '添加品牌', 'pms:brand:create', null, '2', '/pms/brand/add', '1', '2018-09-29 16:49:34', '0');
INSERT INTO `ums_permission` VALUES ('16', '6', '修改品牌', 'pms:brand:update', null, '2', '/pms/brand/update', '1', '2018-09-29 16:50:55', '0');
INSERT INTO `ums_permission` VALUES ('17', '6', '刪除品牌', 'pms:brand:delete', null, '2', '/pms/brand/delete', '1', '2018-09-29 16:50:59', '0');
INSERT INTO `ums_permission` VALUES ('18', '0', '首頁', null, null, '0', null, '1', '2018-09-29 16:51:57', '0');
-- ----------------------------
-- Table structure for ums_role
-- ----------------------------
DROP TABLE IF EXISTS `ums_role`;
CREATE TABLE `ums_role` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL COMMENT '名稱',
`description` varchar(500) DEFAULT NULL COMMENT '描述',
`admin_count` int(11) DEFAULT NULL COMMENT '後臺用戶數量',
`create_time` datetime DEFAULT NULL COMMENT '創建時間',
`status` int(1) DEFAULT '1' COMMENT '啓用狀態:0->禁用;1->啓用',
`sort` int(11) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='後臺用戶角色表';
-- ----------------------------
-- Records of ums_role
-- ----------------------------
INSERT INTO `ums_role` VALUES ('1', '商品管理員', '商品管理員', '0', '2018-09-30 15:46:11', '1', '0');
INSERT INTO `ums_role` VALUES ('2', '商品分類管理員', '商品分類管理員', '0', '2018-09-30 15:53:45', '1', '0');
INSERT INTO `ums_role` VALUES ('3', '商品類型管理員', '商品類型管理員', '0', '2018-09-30 15:53:56', '1', '0');
INSERT INTO `ums_role` VALUES ('4', '品牌管理員', '品牌管理員', '0', '2018-09-30 15:54:12', '1', '0');
-- ----------------------------
-- Table structure for ums_role_permission_relation
-- ----------------------------
DROP TABLE IF EXISTS `ums_role_permission_relation`;
CREATE TABLE `ums_role_permission_relation` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`role_id` bigint(20) DEFAULT NULL,
`permission_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COMMENT='後臺用戶角色和權限關係表';
-- ----------------------------
-- Records of ums_role_permission_relation
-- ----------------------------
INSERT INTO `ums_role_permission_relation` VALUES ('1', '1', '1');
INSERT INTO `ums_role_permission_relation` VALUES ('2', '1', '2');
INSERT INTO `ums_role_permission_relation` VALUES ('3', '1', '3');
INSERT INTO `ums_role_permission_relation` VALUES ('4', '1', '7');
INSERT INTO `ums_role_permission_relation` VALUES ('5', '1', '8');
INSERT INTO `ums_role_permission_relation` VALUES ('6', '2', '4');
INSERT INTO `ums_role_permission_relation` VALUES ('7', '2', '9');
INSERT INTO `ums_role_permission_relation` VALUES ('8', '2', '10');
INSERT INTO `ums_role_permission_relation` VALUES ('9', '2', '11');
INSERT INTO `ums_role_permission_relation` VALUES ('10', '3', '5');
INSERT INTO `ums_role_permission_relation` VALUES ('11', '3', '12');
INSERT INTO `ums_role_permission_relation` VALUES ('12', '3', '13');
INSERT INTO `ums_role_permission_relation` VALUES ('13', '3', '14');
INSERT INTO `ums_role_permission_relation` VALUES ('14', '4', '6');
INSERT INTO `ums_role_permission_relation` VALUES ('15', '4', '15');
INSERT INTO `ums_role_permission_relation` VALUES ('16', '4', '16');
INSERT INTO `ums_role_permission_relation` VALUES ('17', '4', '17');
2.搭建SSM+Security
ssm+過濾器鏈即可
3.Dao層使用逆向工程
不支持多表,用橋表模擬
4.查數據庫方式認證
封裝返回類(必須實現userdetail接口)、自定義補充userdao、service、配置config(驗證碼過濾器)
SpringSecurity+Springboot權限管理
執行流程、代碼spring、ssm、springboot、ncore
**遇到的問題:**token持久化時啓動就創建表?
參考該博客https://www.cnblogs.com/xuwenjin/p/9933218.html