Spring Security也有对Jsp标签的支持的标签库。其中一共定义了三个标签:authorize、authentication和accesscontrollist。其中authentication标签是用来代表当前Authentication对象的,我们可以利用它来展示当前Authentication对象的相关信息。另外两个标签是用于权限控制的,可以利用它们来包裹需要保护的内容,通常是超链接和按钮。
如果需要使用Spring Security的标签库,那么首先我们应当将对应的jar包spring-security-taglibs-xxx.jar放入WEB-INF/lib下;其次我们需要在页面上引入Spring Security的标签库。
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
接下来就可以在页面上自由的使用Spring Security的标签库提供的标签了。
1.1 authorize
authorize是用来判断普通权限的,通过判断用户是否具有对应的权限而控制其所包含内容的显示,其可以指定如下属性。
1、access
access属性需要使用表达式来判断权限,当表达式的返回结果为true时表示拥有对应的权限。
<sec:authorize access="hasRole('admin')">
<a href="admin.jsp">admin page</a>
</sec:authorize>
需要注意的是因为access属性是使用表达式的,所以我们必须确保ApplicationContext中存在一个WebSecurityExpressionHandler,最简单的办法就是直接使用NameSpace,通过设置http元素的use-expressions="true"让NameSpace自动为我们创建一个WebSecurityExpressionHandler。
2、ifAllGranted、ifAnyGranted和ifNotGranted
这三个属性的用法类似,它们都接收以逗号分隔的权限列表,且不能使用表达式。ifAllGranted表示需要包含所有的权限,ifAnyGranted表示只需要包含其中的任意一个即可,ifNotGranted表示不能包含指定的任意一个权限。
<!-- 需要拥有所有的权限 -->
<sec:authorize ifAllGranted=