基于shiro权限的菜单实现

一.页面jsp实现方式

jsp引入shiro标签

<%@ taglib uri="http://shiro.apache.org/tags" prefix="shiro" %>

将所需要展示的 菜单 li 使用shiro标签库进行包裹,如下所示
jsp页面shiro标签部分
属性解释:
name=“org:add or org:delete or org:update” shiro必填属性,对应后面数据库中的权限,属性值为自定义

二,执行自定义realm获取当前用户权限

根据授权的登陆用户信息获取当前用户所属角色,以及角色对应的权限,代码如下

// 用于授权
	@Override
	protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
		//从 principals获取主身份信息
		//将getPrimaryPrincipal方法返回值转为真实身份类型(在上边的doGetAuthenticationInfo认证通过填充到SimpleAuthenticationInfo中身份类型),
		PUser user =  (PUser) principals.getPrimaryPrincipal();
		//根据身份信息获取权限信息
		//从数据库获取到权限数据
		List<String> roleListPermission=null;
		List<String> MenuListPPermission=null;
		try {
			roleListPermission = pUserService.findroleListByUserId(user.getId().toString());
			MenuListPPermission = pUserService.findMenuListByUserId(user.getId().toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
		//查到权限数据,返回授权信息(要包括 上边的permissions)
		SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
		 Set<String> setRoleListPermission=new HashSet<String>();         
		 setRoleListPermission.addAll(roleListPermission);//给set填充         
		//将上边查询到授权信息填充到simpleAuthorizationInfo对象中
		simpleAuthorizationInfo.setRoles(setRoleListPermission);
		Set<String> setMenuListPPermission=new HashSet<String>();         
		setMenuListPPermission.addAll(MenuListPPermission);//给set填充      
		simpleAuthorizationInfo.setStringPermissions(setMenuListPPermission);;
//		simpleAuthorizationInfo.addStringPermissions(MenuListPPermission);
		return simpleAuthorizationInfo;
	}

三,数据库涉及到的三张数据表

1.用户对应的角色表
p_user_role
在这里插入图片描述

2.角色对应的权限表
p_role_permission
在这里插入图片描述

3.具体的权限配置表
p_permission
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值