11.4.6 使用Acegi的标签库
称之为标签库可能有点言过其辞了。实际上,Acegi只提供了一个JSP标签:<authz:authorize>标签。
虽然Acegi的安全强制过滤器能够阻止用户浏览他们没有权限看到的页面,但最好的做法是从一开始就不提供指向受限制页面的链接。<authz:authorize>标签能够根据当前用户是否拥有恰当权限来决定显示或隐藏Web页面的内容。
<authz:authorize>是一个流程控制标签,能够在满足特定安全需求的条件下显示它的内容体。它有三个互斥的参数:
n ifAllGranted——是一个由逗号分隔的权限列表,用户必须拥有所有列出的权限才能渲染标签体;
n ifAnyGranted——是一个由逗号分隔的权限列表,用户必须至少拥有其中的一个才能渲染标签体;
n ifNotGranted——是一个由逗号分隔的权限列表,用户必须不拥有其中的任何一个才能渲染标签体。
你可以轻松地想像在JSP中如何使用<authz:authorize>标签根据用户的权限来限制他们的行为。例如,Spring培训应用有一个向用户显示课程有关信息的课程明细页面。对管理员来说,如果能够从课程明细页面直接跳转到课程编辑页面从而可以更新课程信息是很方便的。但你不希望这个链接对除了管理员之外的其他用户可见。
使用<authz:authorize>标签,在用户没有管理员权限的情况下,你可以避免渲染到课程编辑页面的链接:
<authz:authorize ifAllGranted="ROLE_ADMINISTRATOR">
<a href="admin/editCourse.htm?courseId=${course.id}">
Edit Course
</a>
</authz:authorize>
这里,我们使用了ifAllGranted参数,由于这里只需要检查一个授权,所以ifAllGranted标签也是可以使用的。Web应用的安全性只是Acegi功能的一个方面。现在让我们考察它的另一面——保护方法调用。
分享到:
相关推荐
这通常涉及到在 XML 配置中添加 `<security:global-method-security>` 或 `<security:http>` 标签。 2. **用户认证**:Acegi 提供了多种认证机制,包括基于表单的登录、HTTP 基本认证、API 密钥等。你可以通过配置 ...
Acegi Security Taglib 提供了一系列的标签,例如`<acegi:authentication>`用于处理用户身份验证,`<acegi:access>`用于定义访问控制等。 在使用`acegi-security-taglib-0.51.jar`时,首先需要将其添加到项目类路径...
然后,使用`<http>`元素配置Web安全服务。最基本的配置如下: ```xml <security:http auto-config='true'> <security:intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN" /> </security:http> ``` 这表示...
使用 `<g:selectParams>` 和 `<g:staticParams>` 标签可以方便地在视图层处理静态参数。例如,创建一个下拉选择框展示 RecordState 类型的数据,同时在显示框中显示选定的值: ```html <!-- 下拉选择框 --> <g:...
<!!-- web.xml文件 --> <?xml version="1.0" encoding="UTF-8"?...<param-value>/WEB-INF/acegi-config.xml</param-value> </context-param> <!-- Acegi 的 Filter Chain 代理 --> <filter> <filter-name>
7. **工具使用**:标签中的“工具”可能指的是 Acegi 配置工具或其他辅助开发工具,如 IDE 插件,它们可以帮助开发者更高效地配置和调试 Acegi 安全框架。 8. **实战案例**:`acegisample`目录可能包含了一个示例...
<listener-class>org.acegisecurity.ui.session.HttpSessionEventPublisher</listener-class> </listener> ``` 监听器配置主要用于启动时加载Spring上下文、初始化日志配置以及处理会话事件等。 #### 三、Spring...
你可以通过`<security:role-prefix>`来定义角色前缀,例如"ROLE_",然后使用`<security:has-role>`或`<security:has-any-role>`在`<security:intercept-url>`中指定角色权限。 **自定义逻辑** Spring ACEGI允许...
<filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class> <init-param> <param-name>targetClass</param-name> <param-value>org.acegisecurity.util.FilterChainProxy</param-value> </init-...
<filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class> <init-param> <param-name>targetClass</param-name> <param-value>org.acegisecurity.util.FilterChainProxy</param-value> </init-...
<bean id="myWebService" class="org.apache.axis2.spring.util.AxisServiceBean"> <property name="name" value="MyWebService"/> <property name="className" value="com.example.MyWebServiceClass"/> ...
<br><br>acegi初级使用者的良好桥梁,让你从零基础学会对acegi的相关配置及简单使用(需要对SSH的搭建有所了解);<br><br>真正高效的acegi权限配置,有效为你节省大量时间,因为你不需要再花费大量时间耗费在网络上查找...
<bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"> <property name="filterInvocationDefinitionSource"> <value> PATTERN_TYPE_APACHE_ANT /**=...
3. **配置**:在Spring配置文件中,我们需要定义`<security:global-method-security>`来启用Acegi,然后配置`<security:http>`元素来设置URL过滤规则,如登录页面、访问权限等。 4. ** acegi.sql**:这个文件可能...
`<url-pattern>/*</url-pattern>`表示该过滤器应用于所有请求路径。 #### 四、Struts配置 ##### 4.1 Struts2过滤器配置 ```xml <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2...
标签库通常包含了一系列的JSP标签,例如`<acegi:user>`可以用来获取当前登录用户的信息,`<acegi:access>`则可以用来判断当前用户是否有执行某个操作的权限。Acegi Security Taglib还提供了一些其他标签,如用于显示...
<filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class> <init-param> <param-name>targetBean</param-name> <param-value>filterChainProxy</param-value> </init-param> </filter> <filter...