Chapter 19. JSP标签库
Spring Security有它自己的Taglib,提供了JSP中访问权限信息和提供安全约束的功能。
要想使用这些标签,你必须在你的JSP中声明安全taglib:
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
这个标签用来决定它的内容是否会被执行。在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, 为了更详细的匹配。
这个标签允许访问当前的Authentication
对象, 保存在安全上下文中。它直接渲染一个对象的属性在JSP中。 所以,比如,如果Authentication
的 principal
属性是Spring Security的 UserDetails
对象的一个实例,就要使用 <sec:authentication property="principal.username" />
来渲染当前用户的名称。
当然,它不必使用JSP标签来实现这些功能,一些人更愿意在视图中保持逻辑越少越好。 你可以在你的MVC控制器中访问Authentication
对象 (通过调用SecurityContextHolder.getContext().getAuthentication()
) 然后直接在模型中添加数据,来渲染视图。
这个标签纸在使用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
会被调用,使用需要的权限来检测, 如果它们中的任何一个被授权了。
相关推荐
这通常通过使用Spring Security的JSP标签库来实现,例如`<sec:authorize>`,它可以判断当前用户是否有权限访问某个部分的页面。然而,当标准标签无法满足需求时,我们可能需要创建自定义标签。 自定义JSP标签的实现...
通常,只需要包括`spring-security-acl`、`spring-security-core`、`spring-security-core-tiger`和`spring-security-taglibs`等核心库。 接着,在`web.xml`中配置DelegatingFilterProxy,将所有HTTP请求路由到...
Spring Security标签库允许在JSP页面中展示安全相关的元素,比如登陆状态、认证信息、访问控制列表等。 ### 保护method篇 #### 保护方法调用 Spring Security提供了对方法调用的保护,可以控制全局范围的方法权限...
- **JSP标签库**:提供了一系列JSP标签用于安全性相关的操作。 - **Java认证和授权服务(JAAS)供应商**:集成JAAS进行认证。 - **CAS认证**:实现CAS单点登录。 - **X.509认证**:支持X.509证书进行身份验证。 ...
8. **标签库**:Spring Security还提供了一个JSP标签库,如`<sec:authorize>`,可以在视图层实现动态授权。例如,`()">`只显示已登录用户的内容。 综上所述,Spring Security 2的配置涉及到多个层面,包括身份验证...
5. **spring-security-taglibs**:包含Spring Security的JSTL标签库,如`sec:authorize`,使得在JSP页面上实现安全控制变得简单。 6. **spring-security-ldap**:这个模块支持与LDAP(轻量级目录访问协议)服务器...
Spring Security 是一个强大的安全框架,用于Java应用的安全管理。它提供了认证、授权和访问控制功能,使得开发者可以轻松地在应用程序中实现复杂的安全需求。在3.1版本中,Spring Security 进一步优化了其核心架构...
3. **视图解析(View Resolution)**:Spring MVC 可以与多种视图技术结合,如 JSP、Thymeleaf 或 FreeMarker,处理返回给用户的响应。 4. **模型和视图(Model and View)**:控制器处理完业务逻辑后,将数据放入...
Spring Security的核心库和相关的Spring模块需要被添加到`dependencies`节点下。例如: ```xml <groupId>org.springframework.security <artifactId>spring-security-config <version>5.6.2 <groupId>...
### Spring Security 多登录页面配置详解 在许多大型企业级应用中,为了更好地实现权限管理和用户体验,往往会采用多个登录页面的方式来进行用户身份验证。这种方式能够有效地将不同类型的用户(如前台用户、后台...
10. **spring-security-taglibs-4.1.0.BUILD-SNAPSHOT.jar**:包含了一系列JSP标签库,简化了在视图层添加安全功能,如显示登录表单、权限检查等。 综上所述,这个"spring security4架包"涵盖了Spring Security的...
为了确保安全,应使用Spring Security提供的`<sec:authorize>`标签来控制HTML元素的可见性和可操作性。 6. **示例代码** `index.jsp`可能包含一个表单,部分代码如下: ```jsp ()" /> $.ajax({ url: '/...
Spring Security 提供了一组 JSP 标签库,可以帮助开发者更容易地在视图层实现安全相关的功能。 **5.1 配置 taglib** 在 JSP 文件中使用这些标签前,需要先配置 `<%@ taglib %>` 指令。 **5.2 authentication** ...
### Spring Security与Spring Boot集成详解 #### 一、Spring Security简介 Spring Security 是一个功能强大的安全框架,它为基于 Java 的应用程序提供了身份验证(authentication)、授权(authorization)、CSRF ...
全注解 spring boot +spring security + mybatis+druid+thymeleaf+jsp+mysql+bootstrap 支持thymeleaf和jsp并存 全注解 spring boot spring security thymeleaf+jsp同时使用 mybatis druid mysql bootstrap 访问 ...
接下来需要添加 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以及...
9. **spring-security-taglibs-3.1.3.RELEASE.jar**:提供了一组JSP标签库,方便在视图层集成Spring Security的功能,如显示登录表单、权限检查等。 10. **spring-security-openid-3.1.3.RELEASE.jar**:此组件使...