权限管理之基于ACL的实现:自定义JSTL函数实现即时认证
来源:互联网 发布:网络磁盘阵列 编辑:程序博客网 时间:2024/06/13 07:31
实现即时认证(即只有拥有相应的权限,才能做相应的操作)
经常用在,在JSP页面上,调用JSTL自定义函数做判断,显示相应的菜单或者功能按钮,比如只有管理员登陆时才显示“删除”按钮,从而完成权限的即时认证。
通过这个例子,说明JSTL自定义函数是如何实现页面段即时认证的,同时也说明自定义一个JSTL函数的步骤。
自定义JSTL函数的定义和使用过程
第一步:定义类和实现方法(方法必须是public static)
/** * JSTL函数,主要功能是可以完成权限的即时认证 * @author Administrator * */publicclass SecurityFunctions { privates tatic AclManager aclManager; publicstatic boolean hasPermission(int userId,String resourceSn,int permission){ returnaclManager.hasPermissionByResourceSn(userId, resourceSn, permission);} //这个方法不能定义为static,因为这将导致spring无法注入publicvoid setAclManager(AclManager aclManager) {SecurityFunctions.aclManager= aclManager;}}
需要注意的是,准备实现JSTL自定义函数的java类方法,必须使用 public static声明,因为通过这样的声明,这个方法在程序启动后就被加载到内存的,而不是等到实例化时才被加载到内存。第二步:编写自定义tld文件,并且将此文件放到WEB-INF或WEB-INF任意子目录下
<?xmlversion="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>my</short-name> <uri>http://www.bjsxt.com/oa/functions</uri> <function> <name>hasPermission</name> <function-class>com.bjsxt.oa.web.SecurityFunctions</function-class> <function-signature>booleanhasPermission(int, java.lang.String,int)</function-signature> </function></taglib>
通过这个自定义tld文件,告诉taglib我们自己定义了function,相当于是taglib的扩展部分。
第三步:在web.xml文件中注册tld
<jsp-config> <taglib> <taglib-uri>http://www.bjsxt.com/myfunctions</taglib-uri> <taglib-location>/WEB-INF/my.tld</taglib-location> </taglib> </jsp-config>
第四步:使用
<%@ taglib prefix="my" uri="http://www.bjsxt.com/myfunctions" %> <c:iftest="${my:hasPermission(login.id,'person',3) }"><ahref="#" onclick="del('person.do?method=del&id=${person.id}');">删除</a></c:if>
根据loginId判断该user是否有足够的权限,进行有选择的显示“删除”命令。小结
本文介绍了如何自定义jstl函数,并通过自定义jstl函数在jsp页面做即时认证,只有通过认证之后,才显示相应的菜单或者功能按钮。
- 权限管理之基于ACL的实现:自定义JSTL函数实现即时认证
- JSTL自定义函数完成ACL即时认证
- 权限管理之基于ACL的实现:讲解授权、认证、获得用户权限过程
- 权限管理之基于ACL的实现:针对需求做分析和设计
- django认证系统实现自定义权限管理
- Linux acl命令,实现文件权限管理
- 如何自定义JSTL标签(在oa系统中用JSTL函数解决即时认证问题)
- 基于AOP实现权限管理:访问控制模型RBAC和ACL
- 基于AOP实现权限管理:访问控制模型RBAC和ACL
- 基于AOP实现权限管理:通过shiro认证身份和模拟授权认证
- 基于AOP实现权限管理:通过shiro认证身份和模拟授权认证
- 【权限管理】基于shiro的权限管理开发实现
- 【权限管理】基于shiro的权限管理开发实现
- 基于smack的即时聊天系统之文件传输功能实现
- struts2自定义标签,实现权限认证
- 基于 Struts 2 拦截器实现细粒度的基于角色的权限认证实现
- JSTL自定义函数库的实现
- Linux下权限管理之ACL权限
- 【黑马程序员】遍历Map集合
- mysql 触发器+存储过程
- CString转string和char*的问题
- HDU 4684 The Budget of Traveler
- jsp页面动态修改提交到的Action路径
- 权限管理之基于ACL的实现:自定义JSTL函数实现即时认证
- 一次血的教训
- Unicode与UTF-8互转(C语言实现)
- Reactor与Proactor的比较【转载内容】
- uva 12260 - Free Goodies (dp,贪心 | 好题)
- 学习opencv(3)---Mat - 基本图像容器
- 字符统计
- warning: target CPU does not support interworking 解决办法
- AS3.0实现照片的渐变效果