权限管理设计之菜单权限

本文介绍了在后台管理系统中,使用Struts2 + Spring + Hibernate MVC框架进行权限菜单设计的方法。每个用户拥有多个角色,角色对应不同权限,权限分为1、2、3级菜单。通过部门-用户、用户-角色、角色-权限的多对多关系设计权限表,并通过算法筛选用户登录后的权限列表,展示在菜单栏中。核心操作在于用户登录后加载并筛选权限,形成层次结构的菜单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 权限菜单的显示

 

MVC框架:struts2 + spring + hibernate

实现功能:后台管理系统中,每个登录的用户,有多个不同的角色,而每个角色都有不同的权限,针对每个用户所拥有的权限列表,根据其中菜单权限的等级进行划分归类,显示在操作菜单栏中。

菜单结构如下:


 

权限表设计如下:

       涉及的实体有部门、用户、角色及权限 ,部门-用户 是一对多关系,用户-角色是多对多关系,角色-权限也是多对多关系。在权限表中,权限等级取值可以是 1 、2、3,分别代表一级菜单、二级菜单、三级菜单,父级权限编号可以找到父级权限 ,一级菜单的父级权限默认是0,通过查询这个字段也可以找出某个菜单的子一级菜单列表。

       通过这样的设计,就可以在用户登录后,获取用户拥有的所有角色,再根据每个角色拥有的权限进行汇总筛选,去除掉角色之间可能重复的权限,组合成分层次的权限结构,最后返回到页面中,根据权限等级划分层次显示即可。

 

以下是实体类的代码:

import java.util.List;
import javax.persistence.*;
import org.hibernate.annotations.GenericGenerator;
import com.ylzinfo.psBusiness.app.entity.power.JGInfo;
import com.ylzinfo.psBusiness.app.entity.power.Role;
@Entity
@Table(name="SYS_USER") 
public class User {

	private String userid; // 用户ID(关键字)
	private String username; // 用户名(用户登录时的用户名 请确保登录名唯一)
	private String passwd; // 密码
	private String realname; // 真实姓名
	private String createtime; // 注册时间
	private String lastlogontime;// 上次登陆时间
	private String lockstate; // 账户锁定状态:0正常,1账户停用
	private String loginedcount; // 已登陆次数
	private String remark; // 备注
	private JGInfo baz001;//所属部门

	private String email;//邮箱地址
	private String reset_pw;//重置密码验证码(格式:验证码_有效时间)
	
	private List<Role> roles;//角色列表
	public User() {
		super();
	}

	@Id
	@GeneratedValue(generator = "paymentableGenerator")  
	@GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
	public String getUserid() {
		return userid;
	}

	public void setUserid(String userid) {
		this.userid = userid;
	}
	@Column(name="username")
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username &
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值