权限之加载权限资源

用户登录成功进入如下的页面:

 

主要是left.jsp权限菜单的加载

核心代码如下:

Jsp:

</head>
<bodystyle="margin: 0">
<divid="Menu">
 
<ulid="MenuUl">
 
<%--显示一级菜单 --%>
<s:iteratorvalue="#application.topPrivileges">
<s:iftest="#session.user.hasPrivilegeByName(name)">
<liclass="level1">
<divonClick="menuClick(this);" class="level1Style">
<imgsrc="style/images/MenuIcon/${id}.gif" class="Icon" />
${name}
</div>
<ulstyle="" class="MenuLevel2" id="aa">
<%--显示二级菜单 --%>
<s:iteratorvalue="children">
<s:iftest="#session.user.hasPrivilegeByName(name)">
<liclass="level2">
<divclass="level2Style">
<imgsrc="style/images/MenuIcon/${id}.gif" />
<atarget="right"href="${pageContext.request.contextPath}${url}.action">${name}</a>
</div>
</li>
</s:if>
</s:iterator>
</ul>
</li>
</s:if>
</s:iterator>
</ul>
</div>
</body>
 
<scripttype="text/javascript">
functionmenuClick(nemu){
$(nemu).next().toggle();
}
</script>

注意:

1. value="#application.topPrivileges",从全局范围内获权限数据(通过自定义InitListener,启动tomact就放入到全局缓存中,因为这些权限资源基本不变;讲在《权限之缓存》讲到)。

2.test="#session.user.hasPrivilegeByName(name)",校验用户是否存在,我们在实体里添了该验证方法

3.其中包含树的知识。

 

User

/**
 * 根据名称判断用户是否有访问菜单的权限
 */
publicboolean hasPrivilegeByName(String name) {
//超级管理有所有的权限
if(isAdmin()) {
returntrue;
}
ActionContext.getContext().getSession().get("user");
 
//普通用户要判断是否含有这个权限
for(Role role : roles) {
for(Privilege priv : role.getPrivileges()) {
if(priv.getName().equals(name)) {
returntrue;
}
}
}
return false;
}
 

即可获得上图。

小结:

1.构建树的思路就是简单的<ul><li></li></ul>实现树形结构的。

2.加载权限菜单思路就时从缓存中查询该用户拥有的权限,然后在循环匹配所有权限,即可得到我们可操作的菜单和按钮。

敬请关注一篇《权限之路径拦截

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值