您的位置:首页 > 其它

权限之加载权限资源

2015-12-01 12:07 375 查看
用户登录成功进入如下的页面:
 


主要是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.加载权限菜单思路就时从缓存中查询该用户拥有的权限,然后在循环匹配所有权限,即可得到我们可操作的菜单和按钮。
敬请关注一篇《权限之路径拦截
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: