`
txf2004
  • 浏览: 7040375 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

如何在页面中使用Acegi权限集合和taglib控制页面元素

阅读更多

如何在页面中使用Acegi权限集合和taglib控制页面元素

王保政

Email:baozhengw@netease.com

JSP页面中的页面元素,URL,按钮是否可见或变灰都可通过Acegi标签库来实现,使用Acegi标签库,可设置不同的权限ID允许点击的按钮,访问的URL,或隐藏无权限的功能菜单。

如何配置和使用标签库?

打开acegi-security-<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">1.0.3</chsdate>.jar,META-INF目录中有一个authz.tld文件,将此文件复制到你的web应用的WEB-INF\tld中,然后配置web.xml,增加:

<taglib>

<taglib-uri>http://acegisecurity.sf.net/authz</taglib-uri>

<taglib-location>/WEB-INF/tld/authz.tld</taglib-location>

</taglib>

然后JSP页面可以通过声明<%@ taglib uri="http://acegisecurity.sf.net/authz" prefix="authz"%>来引用标签库。

声明了标签以后,在页面中可以按下面的格式使用acegi标签(authz标签可以嵌套使用)

<!-- 使用权限标签的例子,标签可以嵌套 -->

<authz:authorize ifAnyGranted="AUTH_USER">

<td> 一般用户权限

</td>

<authz:authorize ifAnyGranted="AUTH_ADMIN">

<td> 超级用户权限

</td>

</authz:authorize>

</authz:authorize>

<authz:authorize ifAnyGranted="AUTH_SYS">

<td> 系统维护权限

</td>

</authz:authorize>

也可以在JavaScript中用document.write输出权限标签:

<script language="JavaScript" type="text/javascript">

//订单中心

document.write('<authz:authorize ifAnyGranted="AUTH_TAG_ORDER_CENTER"> ');

new tree(TREE_ITEMS1, TREE_TPL);

document.write('</authz:authorize>');

</script>

在有javaScript脚本中有时不方便引用acegi标签,可以从SecurityContextHolder中获得权限集合,然后判断当前登录的用户,其权限集合中是否有某权限,根据判断结果来决定显示或隐藏哪些页面元素,见下面的JSP:

<%@ page contentType="text/html; charset=GBK"%>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

<%@ taglib uri="http://acegisecurity.sf.net/authz" prefix="authz"%>

<%@ page import="org.acegisecurity.Authentication" %>

<%@ page import="org.acegisecurity.context.SecurityContext" %>

<%@ page import="org.acegisecurity.context.SecurityContextHolder" %>

<%@ page import="org.acegisecurity.userdetails.UserDetails" %>

<%@ page import="org.acegisecurity.ui.AccessDeniedHandlerImpl" %>

<%@ page import="org.springframework.aop.framework.ProxyFactoryBean"%>

<%@ page import="org.springframework.context.ApplicationContext"%>

<%@ page import="org.springframework.context.support.ClassPathXmlApplicationContext"%>

<%@ page import="org.acegisecurity.GrantedAuthority"%>

<%@ page import="com.mysoft.common.ValidateAcegiAuth"%>

<%

SecurityContext ctx = SecurityContextHolder.getContext();

%>

。。。

<script language="JavaScript" type="text/javascript">

//下面是调用自定义的类ValidateAcegiAuth,输入当前登录用户的SecurityContext,及权限码,如果有AUTH_FUN_TICKET_CHKERR权限,则执行相应的JS脚本。

<%if(ValidateAcegiAuth.validate(ctx,"AUTH_FUN_TICKET_CHKERR")){%>

//具有AUTH_FUN_TICKET_CHKERR 权限,执行相应js脚本

<%}%>

</script>

下面是ValidateAcegiAuth类的代码:

package com.mysoft.common;

import org.acegisecurity.Authentication;

import org.acegisecurity.context.SecurityContext;

import org.acegisecurity.context.SecurityContextHolder;

import org.acegisecurity.userdetails.UserDetails;

import org.acegisecurity.ui.AccessDeniedHandlerImpl;

import org.springframework.aop.framework.ProxyFactoryBean;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import org.acegisecurity.GrantedAuthority;

/**

* 验证权限集合中是否有某一权限

* @author bzwang

*

*

*/

public class ValidateAcegiAuth

{

/**

* 验证权限集合中是否有某一权限

* @param ctxLoginUser SecurityContext

* @param sAuthID 权限ID

* @return boolean 是否有指定的权限

*/

public static boolean validate(SecurityContext ctxLoginUser,String sAuthID)

{

boolean bool = false;

Authentication authLoginUser = null;

GrantedAuthority[] arrayAuthorities = null;

if(ctxLoginUser!=null)

{

authLoginUser = ctxLoginUser.getAuthentication();

if(authLoginUser!=null)

{

arrayAuthorities = authLoginUser.getAuthorities();

for(int i=0;i<arrayAuthorities.length;i++)

{

if(arrayAuthorities[i].toString().equals(sAuthID))

{

bool = true;

break;

}

}

}

else

{

bool = false;

}

}

else

{

bool = false;

}

return bool;

}

}

分享到:
评论

相关推荐

    acegi-security-taglib-0.6.jar.zip

    一旦设置完毕,就可以在JSP页面中使用Acegi Security Taglib提供的标签,实现安全相关的功能。 总的来说,Acegi Security Taglib-0.6.jar.zip是一个用于Spring Web应用的安全控制库,它通过提供一系列JSP标签简化了...

    acegi-security-taglib-0.6.1.jar.zip

    在这个案例中,了解许可证内容非常重要,因为这决定了你如何在项目中使用Acegi Security Taglib,是否需要公开源码,以及是否有商业用途的限制。 在使用Acegi Security Taglib时,需要注意以下几点: 1. 配置:首先...

    acegi-security-taglib-0.51.jar.zip

    这行代码引入了Acegi Security的标签库,并分配了"acegi"作为前缀,这样就可以在页面中使用如下的标签: ```jsp &lt;acegi:access denied="true"&gt; &lt;!-- 用户无权访问的内容 --&gt; &lt;/acegi:access&gt; ``` `springframework...

    使用acegi控制用户权限实例

    在本实例中,我们将深入探讨如何使用Acegi来控制用户的权限。Acegi Security已经被Spring Security替代,但其核心思想和机制仍然适用于现代的Spring Security。 首先,我们需要理解Acegi的基础概念。Acegi的核心是`...

    Spring Acegi权限控制

    Spring Acegi权限控制是Spring框架中用于实现Web应用安全的一种解决方案。Acegi Security(现已被Spring Security替代)是一个功能强大的安全框架,它主要解决了认证(Authentication)和授权(Authorization)这两...

    基于rbac模式的acegi权限管理

    在"权限管理组件在Spring框架下的设计与实现.nh"这个文件中,可能包含了关于如何配置Acegi Security、定义角色和权限、以及如何在Spring MVC控制器中使用这些机制的具体步骤和示例。通常,这会包括XML配置文件的设置...

    权限Acegi的使用

    4. **角色与权限**:在Acegi中,用户可以被分配多个角色,而角色则拥有特定的权限。这使得权限管理变得灵活,可以根据需要为不同的角色分配不同的访问权限。 5. **会话管理**:Acegi提供了会话管理功能,如会话固定...

    acegi 权限控制按钮

    在Acegi中,权限控制主要通过`AccessDecisionManager`、`AuthenticationManager`和`SecurityContextHolder`等组件来实现。`AccessDecisionManager`负责决策是否允许访问某个资源,`AuthenticationManager`处理用户...

    acegi权限控制学习笔记

    Acegi权限控制学习笔记 Acegi安全框架是Spring Security的前身,它提供了一种强大的、灵活的、基于组件的安全解决方案,用于实现企业级应用的安全控制。在这个学习笔记中,我们将探讨两个关键点:身份认证成功后的...

    acegi权限控制与数据库配置在SSH中的初级使用

    &lt;br&gt;真正高效的acegi权限配置,有效为你节省大量时间,因为你不需要再花费大量时间耗费在网络上查找“关于acegi的配置”; &lt;br&gt;acegi中高级配置在后文将陆续推出,敬请时刻关注; &lt;br&gt;下载资源仅需4分,相信你...

    batis+acegi实现的动态权限控制

    标题 "batis+acegi实现的动态权限控制" 暗示了这个项目是关于整合Spring框架中的Acegi安全模块和MyBatis ORM框架,来创建一个动态的权限管理系统。Acegi是Spring早期的安全组件,现在已被Spring Security所取代,但...

    最简单acegi权限管理实例

    在本实例中,我们将深入探讨如何使用Acegi进行权限管理,以及如何通过一个简单的项目来学习Acegi的核心功能。 首先,Acegi提供了一种灵活的方式来定义用户角色和权限,允许我们基于角色的访问控制(RBAC)。在这个...

    spring acegi 使用工程demo

    3. **配置**:在Spring配置文件中,我们需要定义`&lt;security:global-method-security&gt;`来启用Acegi,然后配置`&lt;security:http&gt;`元素来设置URL过滤规则,如登录页面、访问权限等。 4. ** acegi.sql**:这个文件可能...

    acegi-security-taglib-0.51.jar

    官方版本,亲测可用

    acegi-security-taglib-0.6.jar

    官方版本,亲测可用

    acegi-security-taglib-0.6.1.jar

    官方版本,亲测可用

    集成ACEGI 进行权限控制.rar

    压缩包内的“集成ACEGI 进行权限控制详细介绍”很可能是详细说明如何在项目中集成和配置ACEGI Security的文档。这个文档可能涵盖了从添加依赖、配置安全设置到编写自定义逻辑的所有步骤,是学习和实践ACEGI ...

Global site tag (gtag.js) - Google Analytics