`

Spring Security JSP标签库

阅读更多

Chapter 19. JSP标签库

Chapter 19. JSP标签库

Spring Security有它自己的Taglib,提供了JSP中访问权限信息和提供安全约束的功能。

19.1. 声明Taglib

要想使用这些标签,你必须在你的JSP中声明安全taglib:

    <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

 

19.2. authorize标签

这个标签用来决定它的内容是否会被执行。在Spring Security 3.0中, 它可以被用在两种方式中[13]。第一个方式是使用 web-security表达式, 指定标签中的access属性。 表达式执行会被WebSecurityExpressionHandlder代理, 这个类定义在application context中(你应该在<http>命名空间配置中 启用了web表达式,并确认这个服务可以使用)。所以,比如,你可能使用

<sec:authorize access="hasRole('supervisor')">

这段内容只能被拥有在他们的<tt>GrantedAuthority</tt>列表中
含有"supervisor"权限的用户才能看到。

</sec:authorize>

一个常见的需求是指显示一个特定的链接,如果用户允许点击它。 怎么让我们进一步决定是否一些事情可以允许呢? 标签也可以用一种可选的模式操作,允许你定义一个特定的URL作为属性。 如果用户允许调用这个URL,标签内容就会被执行, 否则它会被略过。所以,你可能会使用一些像

<sec:authorize url="/admin">

这些内容之会被有权限发送请求到"/admin" URL的用户才可以看到。

</sec:authorize>

为了使用这个标签,必须在你的application context中拥有一个 WebInvocationPrivilegeEvaluator实例。 如果你使用了命名空间,会自动注册一个。这是一个 DefaultWebInvocationPrivilegeEvaluator的实例, 它会创建一个默认web请求对提供的URL,调用安全拦截器来查看请求是成功还是失败的。 这允许你代理到访问控制设置,你使用intercept-url声明在 <http>命名空间中的配置,保存信息(比如必须的角色)在你的JSP中。 这种方式也可以结合method属性,提供HTTP method, 为了更详细的匹配。

19.3.  authentication 标签

这个标签允许访问当前的Authentication对象, 保存在安全上下文中。它直接渲染一个对象的属性在JSP中。 所以,比如,如果Authenticationprincipal属性是Spring Security的 UserDetails对象的一个实例,就要使用 <sec:authentication property="principal.username" /> 来渲染当前用户的名称。

当然,它不必使用JSP标签来实现这些功能,一些人更愿意在视图中保持逻辑越少越好。 你可以在你的MVC控制器中访问Authentication对象 (通过调用SecurityContextHolder.getContext().getAuthentication()) 然后直接在模型中添加数据,来渲染视图。

19.4.  accesscontrollist 标签

这个标签纸在使用Spring Security ACL模块时才可以使用。它检测一个用逗号分隔的 特定领域对象的需要权限列表。如果当前用户拥有这些权限的任何一个,标签内容就会被执行。 否则,就会被略过。一个例子可能像

<sec:accesscontrollist hasPermission="1,2" domainObject="someObject">

 这些将被显示,如果用户拥有指定对象的权限显示为"1"或"2"。

</sec:accesscontrollist>

权限会被传递到PermissionFactory 定义在application context中,把它们转换为ACL的 Permission实例,所以他们可以使用 工厂支持的任何格式 - 不是必须使用整数,它们可以是字符串,像 READ 或者 WRITE。 如果没有找到PermissionFactory, 一个DefaultPermissionFactory实例会被使用。 application context中的AclService会被用来加载 对应的对象的Acl实例。 Acl会被调用,使用需要的权限来检测, 如果它们中的任何一个被授权了。



[13] Spring Security 2.0遗留的方式也是支持的, 但是不推荐使用。

分享到:
评论

相关推荐

    spring security进级篇 V 自定义标签控制显示

    这通常通过使用Spring Security的JSP标签库来实现,例如`&lt;sec:authorize&gt;`,它可以判断当前用户是否有权限访问某个部分的页面。然而,当标准标签无法满足需求时,我们可能需要创建自定义标签。 自定义JSP标签的实现...

    Spring Security 把授权信息写入数据库

    通常,只需要包括`spring-security-acl`、`spring-security-core`、`spring-security-core-tiger`和`spring-security-taglibs`等核心库。 接着,在`web.xml`中配置DelegatingFilterProxy,将所有HTTP请求路由到...

    spring security3 开发手册

    Spring Security标签库允许在JSP页面中展示安全相关的元素,比如登陆状态、认证信息、访问控制列表等。 ### 保护method篇 #### 保护方法调用 Spring Security提供了对方法调用的保护,可以控制全局范围的方法权限...

    Spring Security 中文教程.pdf

    - **JSP标签库**:提供了一系列JSP标签用于安全性相关的操作。 - **Java认证和授权服务(JAAS)供应商**:集成JAAS进行认证。 - **CAS认证**:实现CAS单点登录。 - **X.509认证**:支持X.509证书进行身份验证。 ...

    spring security2配置

    8. **标签库**:Spring Security还提供了一个JSP标签库,如`&lt;sec:authorize&gt;`,可以在视图层实现动态授权。例如,`()"&gt;`只显示已登录用户的内容。 综上所述,Spring Security 2的配置涉及到多个层面,包括身份验证...

    springsecurity所有jar包

    5. **spring-security-taglibs**:包含Spring Security的JSTL标签库,如`sec:authorize`,使得在JSP页面上实现安全控制变得简单。 6. **spring-security-ldap**:这个模块支持与LDAP(轻量级目录访问协议)服务器...

    Spring Security3.1实例

    Spring Security 是一个强大的安全框架,用于Java应用的安全管理。它提供了认证、授权和访问控制功能,使得开发者可以轻松地在应用程序中实现复杂的安全需求。在3.1版本中,Spring Security 进一步优化了其核心架构...

    spring security用户权限项目

    3. **视图解析(View Resolution)**:Spring MVC 可以与多种视图技术结合,如 JSP、Thymeleaf 或 FreeMarker,处理返回给用户的响应。 4. **模型和视图(Model and View)**:控制器处理完业务逻辑后,将数据放入...

    Spring Security 新手入门级maven实例

    Spring Security的核心库和相关的Spring模块需要被添加到`dependencies`节点下。例如: ```xml &lt;groupId&gt;org.springframework.security &lt;artifactId&gt;spring-security-config &lt;version&gt;5.6.2 &lt;groupId&gt;...

    spring-security多登录页面配置

    ### Spring Security 多登录页面配置详解 在许多大型企业级应用中,为了更好地实现权限管理和用户体验,往往会采用多个登录页面的方式来进行用户身份验证。这种方式能够有效地将不同类型的用户(如前台用户、后台...

    spring security4架包

    10. **spring-security-taglibs-4.1.0.BUILD-SNAPSHOT.jar**:包含了一系列JSP标签库,简化了在视图层添加安全功能,如显示登录表单、权限检查等。 综上所述,这个"spring security4架包"涵盖了Spring Security的...

    spring security ajax请求与html共存

    为了确保安全,应使用Spring Security提供的`&lt;sec:authorize&gt;`标签来控制HTML元素的可见性和可操作性。 6. **示例代码** `index.jsp`可能包含一个表单,部分代码如下: ```jsp ()" /&gt; $.ajax({ url: '/...

    SpringSecurity_day03.pdf

    ### Spring Security与Spring Boot集成详解 #### 一、Spring Security简介 Spring Security 是一个功能强大的安全框架,它为基于 Java 的应用程序提供了身份验证(authentication)、授权(authorization)、CSRF ...

    全注解 spring boot +spring security + mybatis+druid+thymeleaf+jsp+mysql+bootstrap

    全注解 spring boot +spring security + mybatis+druid+thymeleaf+jsp+mysql+bootstrap 支持thymeleaf和jsp并存 全注解 spring boot spring security thymeleaf+jsp同时使用 mybatis druid mysql bootstrap 访问 ...

    myeclipse 8.5的spring security 2.0.5的简单练习(图解)

    接下来需要添加 Spring 和 Spring Security 相关的依赖库。 1. **添加 Spring 2.5**: - 在 MyEclipse 中创建一个新的 Spring 项目。 - 添加 Spring 2.5 的默认配置。 2. **添加 Spring Security 2.0.5**: - 将 ...

    全注解 spring boot +spring security + mybatis+druid+thymeleaf+mysql+bootstrap

    标题中的"全注解 spring boot +spring security + mybatis+druid+thymeleaf+mysql+bootstrap"是一个集成开发环境的配置,涉及到的主要技术有Spring Boot、Spring Security、MyBatis、Druid、Thymeleaf、MySQL以及...

    SpringSecurity3.1.3的jar包

    9. **spring-security-taglibs-3.1.3.RELEASE.jar**:提供了一组JSP标签库,方便在视图层集成Spring Security的功能,如显示登录表单、权限检查等。 10. **spring-security-openid-3.1.3.RELEASE.jar**:此组件使...

Global site tag (gtag.js) - Google Analytics