源码免费下载地址:关注微信公众号“虾米聊吧”,回复关键字“权限”
推荐最新技术springboot版权限管理(java后台通用权限管理系统(springboot)),采用最新技术架构,功能强大!
注:由于该项目比较老,所以没有采用maven管理,建议下载springboot权限管理系统,对学习和使用会更有帮助。
springboot权限管理系统介绍地址:https://blog.csdn.net/zwx19921215/article/details/97806078
springboot权限管理系统初级版下载地址:http://zyshare.cn/resource/detail/3
springboot权限管理系统高级版下载地址:http://zyshare.cn/resource/detail/7
springboot个人博客系统:https://blog.csdn.net/zwx19921215/article/details/102665020
后台管理系统模板html打包下载: http://zyshare.cn/resource/detail/14
最近在做一个网站类型项目,主要负责后台,ui框架选型为jquery easy ui,项目架构为spring mvc + spring jdbc,简单易用好上手!搭建好框架后开始了第一个任务,设计并实现一套简单的权限管理功能。
一套最基本的权限管理包括用户、角色、资源。
我的设计如下:
用户:user
角色:role
用户-角色:user_role
资源:resource(包括上级菜单、子菜单、按钮等资源)
角色-资源:role_resource
标准的权限管理系统设计为以上5张表。
注:用户、用户-角色我就不做说明了,这两个是很简单的两块,用户的crud,以及为用户分配角色(多对多的关系)稍微琢磨一下就清楚了,下面都是针对为角色分配权限的实现
效果图:
展示层采用ztree树
role.jsp
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ include file="/views/back/include/taglib.jsp"%>
角色名称
描述
创建时间
action层
RoleAction.java
@RequestMapping(value = "/treedata.jhtml")
@ResponseBody
public String treedata(HttpServletRequest request, Model model) {
DynamicParams params = new DynamicParams(request);
List
service层
AuthManager.java
// 菜单管理
public List
/**
* 去除菜单中重复项
*
* @param list
* @return
*/
private List removeDuplicate(List list) {
List result = new ArrayList();
Set menuIds = new HashSet();
for (int i = 0; i < list.size(); i++) {
Menu m = list.get(i);
if (m != null && menuIds.add(m.getId())) {
result.add(m);
}
}
return result;
}
public List findRoleMenuList(DynamicParams params) {
List roleMenus = roleMenuDao.findList(params);
return roleMenus;
}
Dao层
menuDao
@Override
protected void createQuery(DynamicParams params, StringBuffer sql, List
userRoleDao
@Override
protected void createQuery(DynamicParams params, StringBuffer sql, List
roleMenuDao
@Override
protected void createQuery(DynamicParams params, StringBuffer sql, List
在WEB-INF目录下建立文件夹tlds 建立自定义标签文件shiros.tld,我们通过自定义标签实现页面按钮的控制。
p2p permission taglib
permission taglib
1.0
p2p_back
http://vanfon.p2p.cn/
权限校验标签,有权限就显示标签体的内容,否则不显示
permission
com.vanfon.p2p.back.tag.PermissionTag
JSP
module
true
false
code
true
false
自定义标签类
package com.vanfon.p2p.back.tag;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import com.vanfon.p2p.entity.system.Admin;
import com.vanfon.p2p.entity.system.Menu;
import com.vanfon.p2p.manager.system.AuthManager;
import com.vanfon.p2p.utils.DynamicParams;
import com.vanfon.p2p.utils.SpringContextHolder;
/**
* 权限控制标签
*
* @author zhangwx
* @date 2015-2-5
*/
public class PermissionTag extends TagSupport {
/**
*
*/
private static final long serialVersionUID = 4592227792811389132L;
private String module;// 属性名必须与JSP自定义标签的属性名一样
private String code;
public String getModule() {
return module;
}
public void setModule(String module) {
this.module = module;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
@Override
public int doStartTag() throws JspException {
boolean result = false;
HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();// 通过成员变量获取HttpServletRequest对象
Admin admin = (Admin) request.getSession().getAttribute("admin");// 获取登录到系统的用户
if (admin != null) {
if ("1".equals(String.valueOf(admin.getIfsuper()))) {// 超级管理员
result = true;
} else {
DynamicParams params = new DynamicParams();
params.put("id", String.valueOf(admin.getId()));
params.put("module", this.module);
params.put("code", this.code);
AuthManager authManager = SpringContextHolder.getBean(AuthManager.class);
List userRoleAuths = authManager.findUserRoleAuthList(params);
if (userRoleAuths != null && userRoleAuths.size() > 0) {
result = true;
}
}
}
return result ? EVAL_BODY_INCLUDE : SKIP_BODY;
}
}
以上就是该权限管理中权限树(为角色分配权限)的大体实现。
项目源码下载地址:http://www.zyshare.cn/resource/detail/1
注:由于本项目年代久远,所以技术比较老旧,新人学习建议此项目 java后台通用权限管理系统(springboot)
推荐项目:java后台通用权限管理系统(springboot)
博主qq:193459197 , qq群技术交流与支持:557911445
关注微信公众号“虾米聊吧”,回复“权限”获取源码,后续持续放送技术架构和资料干货!!!
一个热衷于分享技术和生活的程序猿,让我们一起交流吧~ 微信扫描二维码,关注我的公众号 |