视图层保护 spring
导入标签库:<%@ taglib prefix="ss" uri="http://www.springframework.org/security/tags" %>浏览器
包含三个标签:安全
<springSecurity:authentication property="" var="" scope="">dom
访问当前用户认证对象的属性url
<springSecurity:accesscontrollist hasPermission="" domainObject="">spa
用于当前认证用户对特定的域对象具有某一指定的权限时,则渲染标签主体中的内容。orm
<springSecurity:authorize access="" ifAllGranted="" ifAnyGranted="" ifNotGranted="" method="" url="">对象
若是特定的安全性限制知足的话,则渲染标签主体中的内容ip
访问认证信息ci
对于<springSecurity:authentication>,最简单的一件事就是便利地访问用户认证信息。
如property="principal.username"。
authorities : 一组用于表示用户所授予权限的GrantedAuthority对象
credentials : 用于核实用户的凭据(一般为用户的密码)
details : 认证的附加信息(IP地址、证件序列号、回话ID等)
principal : 用户的主要信息对象
若是须要将值赋值给一个变量,只须要在var属性中指明变量的名字。变量默认是定义在页面做用域内的,若是想在其余做用域,如请求或会话做用域,能够经过scope属性来声明。
根据权限渲染
举个例子
<springSecurity:authorize access="isAuthenticated and principal.username = 'aries'" >
<a href="/admin">administration</a>
</springSecurity:authorize>
可是没法阻止别人在浏览器的地址栏中手动输入/admin,不过能够在安全性配置文件中添加一个新的<intercept-url>以更加严格的约束/admin URL的安全性。
<intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN') and hasIpAddress('192.168.1.2')" />
即管理功能被锁定了。URL地址获得了保护,而且到这个URL的连接在用户没有受权使用的状况下不会显示,可是为了作到这一点,须要在<intercept-url >和<springSecurity:authorize >标签中使用spel进行声明。以下:
<springSecurity:authorize url="/admin/**">
<spring:url value="/admin" var="admin_url"></spring:url>
<a href="${admin_url} }">administration</a>
</springSecurity:authorize>
这里url属性所要作的事情,不像access属性那样明确声明安全性限制,url属性对一个给定的URL模式间接引用其安全性限制,因为在配置中已经为/admin声明了安全性限制,从而这里可使用url属性。