【JavaWeb项目】一个众筹网站的开发(六)后台用户权限控制
登陆成功进入控制面板后
- 左侧的菜单是共同的元素,抽取出来做静态包含
- 要求必须是按照不同的用户得到不同的菜单
- 用户做了权限限制,哪个用户能操作哪些内容(链接、按钮、内容)
一、RBAC权限模型
权限管理是大部分软件系统都会涉及的,而且权限管理的需求本质往往是一样的,不同的角色拥有不同的权限,只要你充当了某个角色,你就拥有了相对应的功能。

用户:每个人都是一个用户;角色:公司(职务);系统(角色):如,管理员,会员,项目经理...权限:能操作哪些东西;举例: 我,秦始皇,钱;我是谁?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";
} }
}
注册后的网址变化了

【JavaWeb项目】一个众筹网站的开发(六)后台用户权限控制的更多相关文章
- 【JavaWeb项目】一个众筹网站的开发(八)后台页面详细设置
一.user.jsp改造 删除引入菜单 抽取导航栏 nav-bar.jsp,删除引入导航栏 删除引入main.jsp的到好烂 数据库里添加url 报错,url不对 没有/ url正确 action=& ...
- 【JavaWeb项目】一个众筹网站的开发(一)架构搭建
本项目是@尚硅谷相关视频的记录. 本项目使用Maven构建,工程架构如下图所示: 一.公司的公共父工程和工具类包 1.父工程 每个公司都有自己的父工程 父工程作用:对公司使用的jar包进行统一管理,别 ...
- 【JavaWeb项目】一个众筹网站的开发(五)后台用户登录功能
用户模块 1)注册 表单校验,使用校验插件 用户密码需要加密存储 注册成功后来到管理控制台,将用户放在session中,防止以后获取 以后用户经常获取用户id,使用mabatis主键自增策略,保存用户 ...
- 【JavaWeb项目】一个众筹网站的开发(四)后台用户注册功能
重点: 密码加密存储 使用jQuery插件做校验和错误提示等 密码不能明文存储,在数据库中是加密存储的 可逆加密:通过密文使用解密算法得到明文 DES AES 不可逆加密:通过密文,得不到明文 MD5 ...
- 【JavaWeb项目】一个众筹网站的开发(九)邮件开发
Java官方支持邮件开发,Javax-mail jdk中默认没有,需要另外下载 apache的基于Javax-mail开发了commons-mail,更加简单高效,推荐使用 一.电子邮件接收和发送协议 ...
- 【JavaWeb项目】一个众筹网站的开发(三)第一个网页
一.bootstrap 本项目采用bootstrap3 bootstrap中文网 https://www.bootcss.com/ 使用bootstrap三步: 1.导入jQuery 2.导入boot ...
- 【JavaWeb项目】一个众筹网站的开发(二)架构搭建之架构测试
1.dao层和pojo都是使用mbg生成,基本的CRUD以及JavaBean 2.将mbg放在dao层,一旦dao层打包以后mbg就删除掉 一.创建数据库用于测试 数据库名称:scw_0325 SQL ...
- 【JavaWeb项目】一个众筹网站的开发(七)后台用户菜单
mvn命令不能运行: jar-war-pom之间是可以直接写,优先找这个工程,而不是仓库的位置 pom-pom子父关系,需要去仓库中找,我们需要使用<relativePath>../pro ...
- 开发指南专题十一:JEECG微云高速开发平台--基础用户权限
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zhangdaiscott/article/details/26580037 开发指南专题 ...
随机推荐
- 启动数据库报:ORA-03113
1启动数据库报:ORA-03113 2.查看oracle运行日志 tail -50 //home/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.l ...
- python--函数的返回值、函数参数的使用、名称空间与作用域、函数嵌套、函数对象
今天学习内容有函数的返回值.函数参数的使用.名称空间与作用域.函数嵌套. 下来我们一一查看. 函数的返回值 看几个栗子: def func(x): y=func() print(y) def foo( ...
- GPIO软件模拟IIC时序
一.MPU6050中的IIC时序 1.1 START和STOP SDA和SCL在高电平时,SDA拉低表示START.SCL拉低,表示可以传输数据. SDA和SCL在低电平时,SDA拉高表示STOP. ...
- 彻底理解 JS 中 this 的指向
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...
- mysql全家桶(二)数据操作
一.数据操作1.增#新增insert into 表名(字段列表) values(值列表);INSERT INTO table_name ( field1, field2,...fieldN ) VAL ...
- QC10迁移到ALM11
转自原作者 http://blog.csdn.net/yhqun/article/details/6981250 服务器A:QC9或QC10服务器B:QC9或QC10 DB Server服务器C:AL ...
- python2读取EXCEL表格内的数据时碰到的问题
一,今天在剥离自动化的测试数据时,发生了一个错误,错误显示读取不到某个单元格的数据. 因为我使用的是python2,正好那一个单元格出现的是中文汉字,再者通过查看报错日志,让我了解到错误的原因. di ...
- ffmpeg -视频旋转和高清转码示例
手头有一个竖屏拍摄的视频(真诚建议不要这么做..),导入到电脑上以后势必要把它旋转90°,可是没想到就这样简单的一个功能,尝试了N个非编软件(openshot, pitivi,还有坑爹的lives)后 ...
- 21. Blog接口开发
一般的系统由登录.增删改查所组成.我们的Blog同样如此.我们会开发登录.创建博客.删除博客.修改博客.查询博客等功能.话不多说,我们直接展开实践吧. 思路分析 创建项目.既然我们要创建一个blog, ...
- 极致CMS建站系统后台GETSHELL
起因 正在学习代码审计 看到有人提交了一个注入https://www.cnvd.org.cn/flaw/show/CNVD-2019-42775 想试试看还有没有别的漏洞 受影响版本 v1.6.3 - ...
