范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

从零开始码后台管理系统权限表设计

  前后台可以正式接通以后,我们就可以设计基础的几个数据库表了,菜单表、角色表、用户表、角色菜单表和用户角色表,有这5个表我们就可以搞定用户权限。
  因为要开始涉及数据库操作,每个表的单表操作我们都会创建Controller、Service、Entity、Mapper、MapperXML,我们先来新建数据库表结构,先建立最基础的表结构,后续有需要再完善,毕竟使用了MybatisPlus,改变结构之后只需要在实体类加属性就好了。
  用户表:CREATE TABLE `sys_user` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `username` varchar(20) NOT NULL COMMENT "用户名",   `password` varchar(200) NOT NULL COMMENT "密码",   `salt` varchar(10) DEFAULT NULL COMMENT "盐",   `name` varchar(64) DEFAULT NULL COMMENT "姓名",   `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间",   `create_by` int(11) DEFAULT NULL COMMENT "创建者",   `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改时间",   `update_by` int(11) DEFAULT NULL COMMENT "修改人",   PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT="用户账户";
  角色表:CREATE TABLE `sys_role` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `label` varchar(200) DEFAULT NULL COMMENT "角色名称",   `alias` varchar(100) DEFAULT NULL COMMENT "角色别名",   `sort` int(11) DEFAULT "0" COMMENT "排序",   `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间",   `create_by` int(11) DEFAULT NULL COMMENT "创建者",   `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改时间",   `update_by` int(11) DEFAULT NULL COMMENT "修改人",   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="角色表";
  用户角色表:CREATE TABLE `sys_user_role` (   `id` int(11) DEFAULT NULL,   `user_id` int(11) DEFAULT NULL,   `role_id` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="用户角色表";
  菜单表:CREATE TABLE `sys_menu` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `parent_id` int(11) DEFAULT NULL COMMENT "上级菜单",   `title` varchar(200) DEFAULT NULL COMMENT "显示名称",   `type` varchar(10) DEFAULT NULL COMMENT "类型",   `name` varchar(100) DEFAULT NULL COMMENT "别名",   `icon` varchar(100) DEFAULT NULL COMMENT "菜单图标",   `path` varchar(100) DEFAULT NULL COMMENT "路由地址",   `redirect` varchar(200) DEFAULT NULL COMMENT "重定向",   `active` varchar(200) DEFAULT NULL COMMENT "菜单高亮",   `component` varchar(100) DEFAULT NULL COMMENT "视图",   `color` varchar(10) DEFAULT NULL COMMENT "颜色",   `hidden` bit(1) DEFAULT b"0" COMMENT "隐藏菜单",   `hidden_breadcrumb` bit(1) DEFAULT b"0" COMMENT "隐藏面包屑",   `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间",   `create_by` int(11) DEFAULT NULL COMMENT "创建者",   `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改时间",   `update_by` int(11) DEFAULT NULL COMMENT "修改人",   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="菜单表";
  角色菜单表:CREATE TABLE `sys_role_menu` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `role_id` int(11) DEFAULT NULL COMMENT "角色ID",   `menu_id` int(11) DEFAULT NULL COMMENT "菜单ID",   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT="角色菜单表";
  在用户表中插入超管账号:INSERT INTO `demo`.`sys_user` (`id`, `username`, `password`, `salt`, `name`, `create_time`, `create_by`, `update_time`, `update_by`) VALUES (1, "admin", "admin", "123456", "超级管理员", DEFAULT, NULL, DEFAULT, NULL)
  引入Lombok方便写实体类     org.projectlombok     lombok     1.18.22 
  新建用户相关类:@Data @TableName("sys_user") public class SysUserEntity {     @TableId     private Long id;      private String username;      private String password;      private String salt;      private String name;      private LocalDateTime createTime;      private Long createBy;      private LocalDateTime updateTime;      private Long updateBy; }  @Mapper public interface SysUserMapper extends BaseMapper { }  public interface SysUserService extends IService {     /**      * 根据用户名获取用户信息      * @param username      * @return      */     SysUserEntity getUserByUserName(String username); }  /**  * @program:  * @description: 用户服务层  * @author:  * @create: 2022-01-27 16:58  **/ @Service("sysUserService") public class SysUserServiceImpl extends ServiceImpl implements SysUserService {     @Override     public SysUserEntity getUserByUserName(String username) {         return this.baseMapper.selectOne(new LambdaQueryWrapper()                 .eq(SysUserEntity::getUsername,username)         );     } }
  修改完善部分登录服务代码:@RestController @RequestMapping("/") public class LoginController {     @Autowired     private LoginService loginService;      @PostMapping("token")     public SaResult doLogin(@RequestBody LoginForm form) throws Exception {          Map data = loginService.login(form);          return SaResult.data(data);     } }  public interface LoginService {     Map login(LoginForm form) throws Exception; }@Service("loginService") public class LoginServiceImpl implements LoginService {     @Autowired     private SysUserService userService;      @Override     public Map login(LoginForm form) throws Exception {         // 验证码校验          // 用户是否存在校验         SysUserEntity user = userService.getUserByUserName(form.getUsername());         System.out.println(user);         if (user == null){             throw new Exception("用户不存在");         }          // 密码校验          // 用户登录         StpUtil.login(form.getUsername());          // 返回结果         Map data = new HashMap<>();         data.put("token",StpUtil.getTokenValue());         data.put("userInfo","{"                 + ""dashboard": " + 0                 + ", "userId": "1""                 + ", "userName": "Administrator""                 + ", "role": "["SA", "admin", "Auditor"]""                 + "}");         return data;     } }
  重启项目调用登录,控制台输出一下内容
  LoginForm(username=admin, password=21232f297a57a5a743894a0e4a801fc3)
  SysUserEntity(id=1, username=admin, password=admin, salt=123456, name=超级管理员, createTime=2022-01-27T17:14:16, createBy=null, updateTime=2022-01-27T17:14:16, updateBy=null)
  SaLog -->: 账号[admin]登录成功
  整体登录流程就是这样了,继续完善。先确定密码加密方式:
  md5(md5(password)+md5(salt))
  在测试类中生成密码存到数据库中@Test public void createPass(){     System.out.println(SaSecureUtil.md5(SaSecureUtil.md5("admin")+SaSecureUtil.md5("20f883")));  }
  登录接口中密码已经在前端经过md5加密,所以修改后端代码if (user == null){     // 用户不存在     throw new Exception("账号密码错误"); }  // 密码校验 String password = SaSecureUtil.md5(form.getPassword()+SaSecureUtil.md5(user.getSalt())); if(!user.getPassword().equals(password)){     throw new Exception("账号密码错误"); }
  新建菜单Controller@RestController @RequestMapping("/system/menu") public class SysMenuController { 	// 创建几个静态路由     @GetMapping("/my")     public SaResult my(){         Map data = new HashMap<>();         List menu = new ArrayList<>();         List permissions = new ArrayList<>();         permissions.add("list.add");         permissions.add("list.edit");         permissions.add("list.delete");         permissions.add("user.add");         permissions.add("user.edit");         permissions.add("user.delete");         data.put("permissions",permissions);           SysMenuDTO menuitem = new SysMenuDTO("home","/home","home","首页","el-icon-eleme-filled","menu",null);         List childrens = new ArrayList<>();         childrens.add(new SysMenuDTO("dashboard","/dashboard","home","控制台","el-icon-menu","menu",true));         childrens.add(new SysMenuDTO("userCenter","/userCenter","userCenter","个人信息","el-icon-user","menu",null));         menuitem.setChildren(childrens);         menu.add(menuitem);          menuitem = new SysMenuDTO("setting","/setting","setting/system","配置","el-icon-setting","menu",null);         childrens = new ArrayList<>();         childrens.add(new SysMenuDTO("settingMenu","/setting/menu","setting/menu","菜单管理","el-icon-fold","menu",null));         menuitem.setChildren(childrens);         menu.add(menuitem);          data.put("menu",menu);          return SaResult.data(data);     }  }
  重启登录
  获取到的菜单
  OK,接下来从完善菜单管理开始逐步写。

国家网信办互联网企业近半年人员保持平稳来源网信中国近期,网传多家大型互联网企业进行大规模裁员并引发舆论热议。对此,中国网信网对腾讯阿里巴巴美团京东等12家互联网企业用工和业务发展情况进行访谈。企业纷纷表示,互联网行业人网传多家大厂大规模裁员,互联网企业近半年来用工人数保持平稳新京报快讯据网信中国官微消息,近期,网传多家大型互联网企业进行大规模裁员并引发舆论热议。对此,中国网信网对腾讯阿里巴巴美团京东等12家互联网企业用工和业务发展情况进行访谈。企业纷纷互联网大厂大规模裁员?国家网信办用工人数平稳据网信中国微信公众号,近期,网传多家大型互联网企业进行大规模裁员并引发舆论热议。对此,中国网信网对腾讯阿里巴巴美团京东等12家互联网企业用工和业务发展情况进行访谈。企业纷纷表示,互监管在即快手未来如何?互联网世界做第二无运行为不变定律,但作为直播界阿二的快手仍然受到网民关注。3月30日快手这个关键字竟进驻GoogleTrends的每日搜寻趋势第11位。原因之一是3月29日公布业绩刘军智算中心在东数西算中扮演重要角色光明网讯随着中国数字化转型的升级加速,优化升级数字基础设施已经成为发展数字经济的重点任务之首。目前,全国一体化大数据中心算力枢纽体系完成总体布局设计,东数西算工程已正式全面启动,加聊聊网络app的陷阱昨天查看支付宝账单,偶然发现有一笔账单不对。最近疫情严重,就没网购。看了支付宝4月份的两个账单有一笔是交的电费,还有一笔是什么绘本svip自动扣费。想来想去也不知道买了什么。点进去ModernC新特性final修饰符ModernC新特性final修饰符在java语言中,你可以使用final关键字来修饰一个函数,来告诉编译器该函数不能被重载,也可以使用final关键字修饰一个类告诉编译器该类不能奇瑞OMODA5定名欧萌达你会买吗?去年就已经正式亮相的奇瑞全新车型OMODA5,今天终于发布了自己的中文名欧萌达,欧萌达也宣布4月8日正式开启预定,并为首批预定用户提供了相当丰厚的预定政策。199元预定一折开一年三18万的电动汽车有多智能随着新能源汽车领域的快速发展,越来越多人开始关注和购买纯电汽车了,但一般都会把购车目标锁定在特斯拉蔚小理这种靠营销获得极大知名度的厂商。当然,它们的产品确实很优秀,但价格并不便宜,软件测试之接口测试核心URLampampampHTTP协议详解重磅来袭,转发收藏URL解析URL统一资源定位符。URI统一资源标识符。URL可以看作是URI的具体实现。URL的构成一个URL一般来说由5个部分构成。protocoldomainportpathu国家计算机病毒应急处理中心监测发现16款违法移动App新华社天津4月8日电(记者张建新梁姊)国家计算机病毒应急处理中心近期通过互联网监测发现16款移动App存在隐私不合规行为,违反网络安全法个人信息保护法相关规定,涉嫌超范围采集个人隐
芯片巨头闪存材料遭污染,行业分析称产品价格二季度将翻涨之前三星最大NAND闪存工厂因疫情紧急停运。今日重要性据铠侠官网及行业媒体集邦咨询2月10日消息,由于用于生产闪存芯片的材料受到污染,导致铠侠位于日本的两座闪存芯片工厂停工,目前正比尔盖茨的话正在被验证,国内科技巨头联手,打压华为反效果出现在过去两年多时间里,美国为了争夺5G市场的主导权,巩固在科技领域的地位,对在5G领域拥有绝对性技术优势的中国科技企业华为实施了多次制裁,但这种毫无底线且并不聪明的做法引起了不少科技ORICO折叠电脑桌评测从此沙发上,床上也是学习办公的好地方在家躺在沙发上,来个葛优躺是多么舒服的一件事情。但是如果要用到电脑,或是看书写字之类的时候,躺沙发就不行了。这时候我就在网上发现了一款非常不错的电脑折叠桌,一起来体验下吧。外观从包十大中央空调品牌有哪些?新房准备装修了,想安装中央空调?目前国内中央空调品牌众多,市场纷杂让不少消费者眼花缭乱,选择一款质量过硬,性价比高的中央空调尤其很难,像下面这位老哥,纠结买哪个品牌,哪款机器,那么接下来就由小编来帮你讲解一下吧。一加是否已准备好应对IQOO数字和VIVOx系列?近期,一加新任总裁已经官宣一加未来将主打性能旗舰,以与OPPOfind系列形成定位差异。这也与我之前在看到一片关于一加10pro在未发布时的爆料,在评论中我曾预测一加未来面对的不再AMD推出ROCm5。0,对InstinctMI200系列和RDNA2架构GPU提供支持AMD悄悄地发布了ROCm5。0,做了相关的改进及功能的增强。其最大变化是支持了RadeonProV620和RadeonProW6800工作站GPU,这一定程度上对基于RDNA2架跟着小午看冬奥在经开区零距离感受科技冬奥魅力走进智慧园区了解碳中和,品尝光伏智能温室培育的小番茄来到科技公园拜访机器人火炬手,体验自动驾驶汽车的魅力2月9日,记者来到落地中国首个可再生能源碳中和智慧园区的金风科技,和全球最大JSP学习笔记1JSP学习笔记一JSP参考httpsblog。csdn。netqq28334041articledetails70153825t1二JSTL什么是jstljstl是java中的一个Kubernetes入门至精通集群搭建系统初始化设置系统主机名以及Host文件的相互解析hostnamectlsethostnamek8smaster01安装依赖包yuminstallyconntrackntpdate学习编程过去和现在都更有趣我看到很多人,包括我附近的朋友,都参加了编程之旅,我发现他们正在以传统的工作范围视角看待这个如此感兴趣的领域。现在,没有冒犯,工作在IT领域也成为优先事项。然而,我认为做IT是为了27地又加入,跨境电商综试区有多重要?日前,国务院批复同意在鄂尔多斯等27个城市和地区设立跨境电子商务综合试验区。这是该试验区近7年时间里的第6次扩围,范围已扩至全国132个城市和地区。从沿海到内陆,超百个城市和地区为