权限之加载权限资源

来源:互联网 发布:网络安全工程入门书籍 编辑:程序博客网 时间:2024/05/22 15:34

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

 

主要是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
原创粉丝点击