1.shiro apache出品的很好用的权限框架,理论上来说只需要程序员配置两个类,shiro就能为我们工作起来。
这几天研究shiro,集成到springboot中,并使用注解权限,踩了不少坑,希望这篇文章能够帮助到大家
本文我将讲述一下springboot整合shiro,使用 @RequiresPermissions 进行控制器权限控制
1.数据库表设计
具体sql文件以及初始化数据在这里:https://github.com/winterme/pkusoft/blob/master/src/sql/user_center.sql
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`uid` varchar(36) NOT NULL,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`password_salt` varchar(255) DEFAULT NULL,
`status` varchar(255) DEFAULT NULL,
`create_user` varchar(255) DEFAULT NULL,
`create_uid` varchar(36) DEFAULT NULL,
`create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `sys_role_permission`;
CREATE TABLE `sys_role_permission` (
`rid` varchar(36) DEFAULT NULL,
`pid` varchar(36) DEFAULT NULL,
`role_name` varchar(255) DEFAULT NULL,
`create_user` varchar(255) DEFAULT NULL,
`create_uid` varchar(36) DEFAULT NULL,
`create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
`id` varchar(36) NOT NULL,
`uid` varchar(36) NOT NULL,
`rid` varchar(36) NOT NULL,
`create_user` varchar(255) DEFAULT NULL,
`create_uid` varchar(36) DEFAULT NULL,
`create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `sys_permission`;
CREATE TABLE `sys_permission` (
`pid` varchar(36) NOT NULL,
`permission_name` varchar(255) DEFAULT NULL,
`permission` varchar(255) DEFAULT NULL,
`url` varchar(255) DEFAULT NULL,
`create_user` varchar(255) DEFAULT NULL,
`create_uid` varchar(36) DEFAULT NULL,
`create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.实体:
在us