安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

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

12月8日 牵手手投稿
  前后台可以正式接通以后,我们就可以设计基础的几个数据库表了,菜单表、角色表、用户表、角色菜单表和用户角色表,有这5个表我们就可以搞定用户权限。
  因为要开始涉及数据库操作,每个表的单表操作我们都会创建Controller、Service、Entity、Mapper、MapperXML,我们先来新建数据库表结构,先建立最基础的表结构,后续有需要再完善,毕竟使用了MybatisPlus,改变结构之后只需要在实体类加属性就好了。
  用户表:CREATETABLEsysuser(idint(11)NOTNULLAUTOINCREMENT,usernamevarchar(20)NOTNULLCOMMENT用户名,passwordvarchar(200)NOTNULLCOMMENT密码,saltvarchar(10)DEFAULTNULLCOMMENT盐,namevarchar(64)DEFAULTNULLCOMMENT姓名,createtimedatetimeDEFAULTCURRENTTIMESTAMPCOMMENT创建时间,createbyint(11)DEFAULTNULLCOMMENT创建者,updatetimedatetimeDEFAULTCURRENTTIMESTAMPONUPDATECURRENTTIMESTAMPCOMMENT修改时间,updatebyint(11)DEFAULTNULLCOMMENT修改人,PRIMARYKEY(id))ENGINEInnoDBAUTOINCREMENT2DEFAULTCHARSETutf8COMMENT用户账户;
  角色表:CREATETABLEsysrole(idint(11)NOTNULLAUTOINCREMENT,labelvarchar(200)DEFAULTNULLCOMMENT角色名称,aliasvarchar(100)DEFAULTNULLCOMMENT角色别名,sortint(11)DEFAULT0COMMENT排序,createtimedatetimeDEFAULTCURRENTTIMESTAMPCOMMENT创建时间,createbyint(11)DEFAULTNULLCOMMENT创建者,updatetimedatetimeDEFAULTCURRENTTIMESTAMPONUPDATECURRENTTIMESTAMPCOMMENT修改时间,updatebyint(11)DEFAULTNULLCOMMENT修改人,PRIMARYKEY(id))ENGINEInnoDBDEFAULTCHARSETutf8COMMENT角色表;
  用户角色表:CREATETABLEsysuserrole(idint(11)DEFAULTNULL,useridint(11)DEFAULTNULL,roleidint(11)DEFAULTNULL)ENGINEInnoDBDEFAULTCHARSETutf8COMMENT用户角色表;
  菜单表:CREATETABLEsysmenu(idint(11)NOTNULLAUTOINCREMENT,parentidint(11)DEFAULTNULLCOMMENT上级菜单,titlevarchar(200)DEFAULTNULLCOMMENT显示名称,typevarchar(10)DEFAULTNULLCOMMENT类型,namevarchar(100)DEFAULTNULLCOMMENT别名,iconvarchar(100)DEFAULTNULLCOMMENT菜单图标,pathvarchar(100)DEFAULTNULLCOMMENT路由地址,redirectvarchar(200)DEFAULTNULLCOMMENT重定向,activevarchar(200)DEFAULTNULLCOMMENT菜单高亮,componentvarchar(100)DEFAULTNULLCOMMENT视图,colorvarchar(10)DEFAULTNULLCOMMENT颜色,hiddenbit(1)DEFAULTb0COMMENT隐藏菜单,hiddenbreadcrumbbit(1)DEFAULTb0COMMENT隐藏面包屑,createtimedatetimeDEFAULTCURRENTTIMESTAMPCOMMENT创建时间,createbyint(11)DEFAULTNULLCOMMENT创建者,updatetimedatetimeDEFAULTCURRENTTIMESTAMPONUPDATECURRENTTIMESTAMPCOMMENT修改时间,updatebyint(11)DEFAULTNULLCOMMENT修改人,PRIMARYKEY(id))ENGINEInnoDBDEFAULTCHARSETutf8COMMENT菜单表;
  角色菜单表:CREATETABLEsysrolemenu(idint(11)NOTNULLAUTOINCREMENT,roleidint(11)DEFAULTNULLCOMMENT角色ID,menuidint(11)DEFAULTNULLCOMMENT菜单ID,PRIMARYKEY(id))ENGINEInnoDBDEFAULTCHARSETutf8COMMENT角色菜单表;
  在用户表中插入超管账号:INSERTINTOdemo。sysuser(id,username,password,salt,name,createtime,createby,updatetime,updateby)VALUES(1,admin,admin,123456,超级管理员,DEFAULT,NULL,DEFAULT,NULL)
  引入Lombok方便写实体类dependencygroupIdorg。projectlombokgroupIdlombokartifactIdversion1。18。22versiondependency
  新建用户相关类:DataTableName(sysuser)publicclassSysUserEntity{TableIdprivateLprivateSprivateSprivateSprivateSprivateLocalDateTimecreateTprivateLongcreateBy;privateLocalDateTimeupdateTprivateLongupdateBy;}MapperpublicinterfaceSysUserMapperextendsBaseMapperSysUserEntity{}publicinterfaceSysUserServiceextendsIServiceSysUserEntity{根据用户名获取用户信息paramusernamereturnSysUserEntitygetUserByUserName(Stringusername);}program:description:用户服务层author:create:2022012716:58Service(sysUserService)publicclassSysUserServiceImplextendsServiceImplSysUserMapper,SysUserEntityimplementsSysUserService{OverridepublicSysUserEntitygetUserByUserName(Stringusername){returnthis。baseMapper。selectOne(newLambdaQueryWrapperSysUserEntity()。eq(SysUserEntity::getUsername,username));}}
  修改完善部分登录服务代码:RestControllerRequestMapping()publicclassLoginController{AutowiredprivateLoginServiceloginSPostMapping(token)publicSaResultdoLogin(RequestBodyLoginFormform)throwsException{MapString,ObjectdataloginService。login(form);returnSaResult。data(data);}}publicinterfaceLoginService{MapString,Objectlogin(LoginFormform)throwsE}Service(loginService)publicclassLoginServiceImplimplementsLoginService{AutowiredprivateSysUserServiceuserSOverridepublicMapString,Objectlogin(LoginFormform)throwsException{验证码校验用户是否存在校验SysUserEntityuseruserService。getUserByUserName(form。getUsername());System。out。println(user);if(usernull){thrownewException(用户不存在);}密码校验用户登录StpUtil。login(form。getUsername());返回结果MapString,ObjectdatanewHashMap();data。put(token,StpUtil。getTokenValue());data。put(userInfo,{dashboard:0,userId:1,userName:Administrator,role:〔SA,admin,Auditor〕});}}
  重启项目调用登录,控制台输出一下内容
  LoginForm(usernameadmin,password21232f297a57a5a743894a0e4a801fc3)
  SysUserEntity(id1,usernameadmin,passwordadmin,salt123456,name超级管理员,createTime20220127T17:14:16,createBynull,updateTime20220127T17:14:16,updateBynull)
  SaLog:账号〔admin〕登录成功
  整体登录流程就是这样了,继续完善。先确定密码加密方式:
  md5(md5(password)md5(salt))
  在测试类中生成密码存到数据库中TestpublicvoidcreatePass(){System。out。println(SaSecureUtil。md5(SaSecureUtil。md5(admin)SaSecureUtil。md5(20f883)));}
  登录接口中密码已经在前端经过md5加密,所以修改后端代码if(usernull){用户不存在thrownewException(账号密码错误);}密码校验StringpasswordSaSecureUtil。md5(form。getPassword()SaSecureUtil。md5(user。getSalt()));if(!user。getPassword()。equals(password)){thrownewException(账号密码错误);}
  新建菜单ControllerRestControllerRequestMapping(systemmenu)publicclassSysMenuController{创建几个静态路由GetMapping(my)publicSaResultmy(){MapString,ObjectdatanewHashMap();ListSysMenuDTOmenunewArrayList();ListStringpermissionsnewArrayList();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);SysMenuDTOmenuitemnewSysMenuDTO(home,home,home,首页,eliconelemefilled,menu,null);ListSysMenuDTOchildrensnewArrayList();childrens。add(newSysMenuDTO(dashboard,dashboard,home,控制台,eliconmenu,menu,true));childrens。add(newSysMenuDTO(userCenter,userCenter,userCenter,个人信息,eliconuser,menu,null));menuitem。setChildren(childrens);menu。add(menuitem);menuitemnewSysMenuDTO(setting,setting,settingsystem,配置,eliconsetting,menu,null);childrensnewArrayList();childrens。add(newSysMenuDTO(settingMenu,settingmenu,settingmenu,菜单管理,eliconfold,menu,null));menuitem。setChildren(childrens);menu。add(menuitem);data。put(menu,menu);returnSaResult。data(data);}}
  重启登录
  获取到的菜单
  OK,接下来从完善菜单管理开始逐步写。
投诉 评论 转载

多路战况尽收眼底新式投屏雷鸟科技带来多人开黑新体验随着互联网以及AI技术的普及,智能电视已经成为每个家庭必备的智能终端,同时也是客厅娱乐的最佳首选。尤其是在家庭聚会时,智能电视的大屏优势就会体现的淋漓尽致。对于现在的年轻用户来……带你看现场!山东港口普洛斯顺丰京东齐聚2021服贸会9月2日至7日,由商务部和北京市人民政府共同主办的2021年中国国际服务贸易交易会(以下简称2021服贸会)在北京国家会议中心和首钢园区举办。2021服贸会主题为数字开启未来,……你是有本职工作吗?为了什么加入今日头条?回答如下:这与有没有本职工作没有太大的关联,只是喜欢头条这个板块,因为他阳光,让人舒心,放心,有正能量。虽然本人有工作,但自从加入今日头条后性格更开朗了。不仅能从头……vivos12pro轻薄旗舰自拍神器前后一亿五千万天机1200vivo发布了轻薄性能旗舰vivos12pro让我们看看他到底有多美上手的第一感觉就是手机非常薄机身重量171克很轻加上前后双曲面设计握直手感真……郭台铭也没想到,自己毫无保留教出来的徒弟,竟抢走苹果大单虽然富士康发生过不少事故,且郭台铭也发布过不少奇葩言论,但不可否认的是,郭台铭确实有两把刷子,富士康之所以能够成为全球最大的代工企业,肯定是有过人之处的,实力不容忽视。之前,比……学会了这个设计模式,再也不是只会写ifelse了责任链模式顾名思义,责任链模式(ChainofResponsibilityPattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦……想买电视机,65寸,8000以内,求推荐?不追求超高画质可以选择小米,要原彩还原画质选索尼8000以内可以接受说明质量等级为佳!海信。三星。康佳。长虹。国产小米。感谢邀请!支持国产,支持小米!海……从零开始码后台管理系统权限表设计前后台可以正式接通以后,我们就可以设计基础的几个数据库表了,菜单表、角色表、用户表、角色菜单表和用户角色表,有这5个表我们就可以搞定用户权限。因为要开始涉及数据库操作,每……好家云店店主大大妈妈在好家云店收获财富和尊重生活在儿子出生之后变了,可以说是磨难的开始。但我相信,真正内心强大的人,都是历经多次打击的。很庆幸在这个时代,电商普惠了大大小小的个体,让我有机会边带孩子边工作,一部手机……百度测试开发一面凉经1。自我介绍2。项目细节,项目难点3。如何对你的这个项目进行功能测试4。测试微信朋友圈点赞,点赞的接口测试5。了解测试吗,测试方法有哪些5。TCP……华为安全系统及终端芯片专利获授权可增加分析难度提高安全能力【华为安全系统及终端芯片专利获授权可增加分析难度提高安全能力】财联社4月29日电,据天眼查App显示,4月29日,华为技术有限公司申请的一种安全系统及终端芯片专利获授权。摘要显……全网第一款1字形吹风机品牌介绍:杭州乐秀电子科技有限公司为小米生态链企业,直白是杭州乐秀电子科技有限公司旗下自有品牌。直白吹风机是公司拳头产品,是个人护理小家电领域新锐品牌。2021荣获江苏有线。视……
计算机网络技术买什么笔记本电脑好?上大学用?入手索尼7M3相机之后,我入手了那些值得买的好物骁龙8Gen1新机发布老旗舰就过气?游戏党表示它现在仍然很吸投影新光源市场正在转变成多元竞争格局勒索攻击深观察全球多国制定网络安全法案,安全合规成企业必修课江西生物科技职业学院在第七届中国国际互联网大学生创新创业大赛美国又下黑手,千亿巨头被撤销牌照!影响有多大?工信部中国联通8月新品盘点三星华为不言,联想小米发声,数量同比上升知情人士阿里巴巴将权力下放给各业务部门谨防美国收割中国切入点高科技回归本质,不失特色,杜伽K310白光机械键盘入手体验菜鸡公关告诉你,张哲瀚的公关声明为什么写得烂?

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利