JSP 标签库
之前的章节中介绍了在 Java 代码中如何使用 Spring Security 提供的能力。很多情况下,用户可能有权限访问某个页面,但是页面上的某些功能对他来说是不可用的。比如对于同样的员工列表,普通用户只能查看数据,而具有经理角色的用户则可以看到对列表进行修改的链接或是按钮等。Spring Security 提供了一个 JSP 标签库用来方便在 JSP 页面中根据用户的权限来控制页面某些部分的显示和隐藏。使用这个 JSP 标签库很简单,只需要在 JSP 页面上添加声明即可:。这个标签库包含如下 3 个标签:
authorize标签:该标签用来判断其中包含的内容是否应该被显示出来。判断的条件可以是某个表达式的求值结果,或是是否能访问某个 URL,分别通过属性 access和 url来指定。如 限定内容只有具有经理角色的用户才可见。限定内容只有能访问 URL/manager_portal.do的用户才可见。
authentication标签:该标签用来获取当前认证对象(Authentication)中的内容。如 可以用来获取当前认证用户的用户名。
accesscontrollist标签:该标签的作用与 authorize标签类似,也是判断其中包含的内容是否应该被显示出来。所不同的是它是基于访问控制列表来做判断的。该标签的属性 domainObject表示的是领域对象,而属性 hasPermission表示的是要检查的权限。如 限定了其中包含的内容只在对领域对象 myReport有读权限的时候才可见。
值得注意的是,在使用 authorize标签的时候,需要通过 来启用表达式的支持。查看 权限控制表达式一节了解关于表达式的更多内容。
在介绍完 JSP 标签库之后,下面介绍如何与 LDAP 进行集成。
使用 LDAP
很多公司都使用 LDAP 服务器来保存员工的相关信息。内部的 IT 系统都需要与 LDAP 服务器做集成来进行用户认证与访问授权。Spring Security 提供了对 LDAP 协议的支持,只需要简单的配置就可以让 Web 应用使用 LDAP 来进行认证。第二个示例应用使用 OpenDS LDAP 服务器并添加了一些测试用户。代码清单 10中给出了配置文件的示例,完整的代码见 参考资料。