概述
登陆成功进入控制面板后
- 左侧的菜单是共同的元素,抽取出来做静态包含
- 要求必须是按照不同的用户得到不同的菜单
- 用户做了权限限制,哪个用户能操作哪些内容(链接、按钮、内容)
一、RBAC权限模型
权限管理是大部分软件系统都会涉及的,而且权限管理的需求本质往往是一样的,不同的角色拥有不同的权限,只要你充当了某个角色,你就拥有了相对应的功能。
RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色域权限进行关联。简单而言,一个用户拥有若干角色,每个角色拥有若干权限,这样就形成了“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限(功能)之间,一般是多对多的关系。
用户:每个人都是一个用户;角色:公司(职务);系统(角色):如,管理员,会员,项目经理...权限:能操作哪些东西;举例: 我,秦始皇,钱;我是谁?leifengyang(用户)来到公司;职务 :讲师(角色)能干什么?: 讲课,给学生解决问题;(权限)用户-----角色;(多对多) 一个用户有很多角色;一个角色下也是很多用户;用户---用户_角色中间表---角色角色----权限(菜单)(多对多);一个角色能操作很多菜单;一个菜单很多角色都能操作角色(用户身份)---角色_权限_中间表---权限(菜单)RBAC:基于 角色用户---(角色)---权限:用户如果直接对应权限,同一类的用户他们操作的菜单都一样,我们并没有将共同因素抽取出来,如果有100万个用户,每个用户都有很多权限,用户和权限直接对应,中 间表非常庞大臃肿直接对应;layerui(弹出层插件)
扩展模型
RBAC0
核心级别,其他级别都建立在该级别上
RBAC1
进行了角色的分层,角色有上下级关系
RBAC2基于RBAC0,进行了角色的访问控制
RBAC3
最全面的权限管理,基于RBAC0的基础上,将RBAC1和RBAC2进行了整合
二、ztree
zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script> <script type="text/javascript" src="zTree_v3-3.5.28/js/jquery.ztree.all.js"></script> <link rel="stylesheet" href="zTree_v3-3.5.28/css/zTreeStyle/zTreeStyle.css" /> </head> <body> <h1>树形结构</h1> <ul id="myztree" class="ztree"></ul> </body> <script> //ztree的一些设置 var setting = { data: { simpleData:{ enable: true } } }; var zNodes =[ {id:1, pId:0, name:"系统权限菜单", open:true}, {id:2, pId:1, name:"控制面板"}, {id:3, pId:1, name:"消息管理"}, {id:4, pId:1, name:"权限管理"}, {id:5, pId:4, name:"用户管理"}, {id:6, pId:4, name:"角色维护"}, {id:7, pId:4, name:"许可维护"}, ]; $(function(){ $.fn.zTree.init($("#myztree"), setting, zNodes); }) </script> </html>
三、处理重定向
注册完,进入控制面板,刷新后会重新提交表单
要用重定向
重定向的main.jsp在WEB-INF的manager文件夹下
需要写一个处理重定向请求的控制器
package com.atguigu.scw.manager.controller; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.atguigu.scw.manager.constant.Constants; @Controller public class DispatcherController { // 伪静态化效果 @RequestMapping(value = "/main.html") public String toMainPage(HttpSession session) { // 校验,只有登陆的用户才可以到main // 判断session中是否有这个用户,如果没有去登录页面 Object object = session.getAttribute(Constants.LOGIN_USER); if (object == null) { // 用户没登陆 return "redirect:/login.jsp"; }else { // 用户登陆 return "manager/main"; } } }
UserController中的return "manager/main";均改为return "redirect:/main.html";
package com.atguigu.scw.manager.controller.permission; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import com.atguigu.scw.manager.bean.TUser; import com.atguigu.scw.manager.constant.Constants; import com.atguigu.scw.manager.service.UserService; //处理所有/permission/user下的请求 @RequestMapping("/permission/user") @Controller public class UserController { private final String MANAGER_MAIN = "manager/main"; @Autowired UserService userService; @RequestMapping("/login") public String login(TUser user, HttpSession session) { // 登陆后返回的用户要放在session中,用TUser TUser login = userService.login(user); if (login == null) { // 登陆失败 session.setAttribute("errorUser", user); session.setAttribute("msg", "登陆失败"); return "redirect:/login.jsp"; } // 登陆成功 // 1.将用户放在session中 session.setAttribute(Constants.LOGIN_USER, login); return "redirect:/main.html"; } // /permission/user/reg @RequestMapping("/reg") public String reg(TUser user, Model model, HttpSession session) { System.out.println("用户注册..." + user); // 1.注册成功后来到控制面板页面 // 1.注册用户 boolean flag = userService.register(user); if (flag == true) { // 1.注册成功,来到控制面板 // 用户保存的数据在user对象中,id是数据库生成的自增主键 // 需要修改mybatis的mapper文件,让其使用自动生成的id session.setAttribute(Constants.LOGIN_USER, user); return "redirect:/main.html"; } else { // 2.注册失败 model.addAttribute("regError", "用户名已经被使用"); // 3.来到页面要回显user之前输入的内容 // 4.user先从隐含模型中拿的;只要pojo,确定完值以后会自动放在隐含模型中 // 用的key是类名首字母小写${tUser.loginacct } return "forward:/reg.jsp"; } } }
注册后的网址变化了
转载于:https://www.cnblogs.com/aidata/p/11475763.html
最后
以上就是无私花卷为你收集整理的【JavaWeb项目】一个众筹网站的开发(六)后台用户权限控制的全部内容,希望文章能够帮你解决【JavaWeb项目】一个众筹网站的开发(六)后台用户权限控制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复