intercept-url摆设

指定阻挡的 url

经过 pattern 指定暂时 intercept-url 设置该当效率于哪些 url。

<security:intercept-url pattern="/**" access="ROLE_USER"/>

指定考察权力

不妨经过 access 属性来指定 intercept-url 对应 URL 考察所该当具备的权力。access 的值是一个字符串,其不妨径直是一个权力的设置,也不妨是一个表白式。常用的典型有大略的脚色称呼设置,多个称呼之间用逗点分割,如:

<security:intercept-url pattern="/secure/**" access="ROLE_USER,ROLE_ADMIN"/>

在上述摆设中就表白 secure 路途下的一切 URL 乞求都该当具备 ROLE_USER 或 ROLE_ADMIN 权力。当 access 的值是以 “ROLE_” 发端的则将会交由 RoleVoter 举行处置。

其余,其还不妨是一个表白式,上述摆设即使运用表白式来表白的话则该当是如次这个格式。

<security:http use-expressions="true">

<security:form-login />

<security:logout />

<security:intercept-url pattern="/secure/**" access="hasAnyRole('ROLE_USER','ROLE_ADMIN')"/>

</security:http>

大概是运用 hasRole()表白式,而后中央以 or 贯穿,如:

<security:intercept-url pattern="/secure/**" access="hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')"/>

须要提防的是运用表白式时须要指定 http 元素的 use-expressions=”true”。更多对于运用表白式的实质将在后文引见。当 intercept-url 的 access 属性运用表白式时默许将运用 WebExpressionVoter 举行处置。

其余,还不妨指定三个比拟特出的属性值,默许情景下将运用 AuthenticatedVoter 来处置它们。IS_AUTHENTICATED_ANONYMOUSLY 表白用户不须要登录就不妨考察;IS_AUTHENTICATED_REMEMBERED 表白用户须要是经过 Remember-Me 功效举行机动登录的本领考察;IS_AUTHENTICATED_FULLY 表白用户的认证典型该当是除前两者除外的,也即是用户须要是经过登录进口举行登录认证的本领考察。如咱们常常会将登录地方树立为 IS_AUTHENTICATED_ANONYMOUSLY。

<security:http>

<security:form-login login-page="/login.jsp"/>

<!-- 登录页面不妨隐姓埋名考察 -->

<security:intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>

<security:intercept-url pattern="/**" access="ROLE_USER"/>

</security:http>

指定考察和议

需要不妨经过指定 intercept-url 的 requires-channel 属性来指定。requires-channel 扶助三个值:http、https 和 any。any 表白 http 和 https 都不妨考察。

<security:http auto-config="true">

<security:form-login/>

<!-- 只能经过 https 考察 -->

<security:intercept-url pattern="/admin/**" access="ROLE_ADMIN" requires-channel="https"/>

<!-- 只能经过 http 考察 -->

<security:intercept-url pattern="/**" access="ROLE_USER" requires-channel="http"/>

</security:http>

须要提防的是当试图运用 http 乞求控制了只能经过 https 考察的资源时会机动跳转到对应的 https 通道从新乞求。即使所运用的 http 大概 https 和议不是监听在规范的端口上(http 默许是 80,https 默许是 443),则须要咱们经过 port-mapping 元素设置好它们的对应联系。

<security:http auto-config="true">

<security:form-login/>

<!-- 只能经过 https 考察 -->

<security:intercept-url pattern="/admin/**" access="ROLE_ADMIN" requires-channel="https"/>

<!-- 只能经过 http 考察 -->

<security:intercept-url pattern="/**" access="ROLE_USER" requires-channel="http"/>

<security:port-mappings>

<security:port-mapping http="8899" https="9988"/>

</security:port-mappings>

</security:http>

指定乞求本领

常常咱们城市诉求某些 URL 只能经过 POST 乞求,某些 URL 只能经过 GET 乞求。那些控制 Spring Security 也仍旧为咱们实行了,经过指定 intercept-url 的 method 属性不妨控制暂时 intercept-url 实用的乞求办法,默许为一切的办法都不妨。

<security:http auto-config="true">

<security:form-login/>

<!-- 只能经过 POST 考察 -->

<security:intercept-url pattern="/post/**" method="POST"/>

<!-- 只能经过 GET 考察 -->

<security:intercept-url pattern="/**" access="ROLE_USER" method="GET"/>

</security:http>

method 的可选值有 GET、POST、DELETE、PUT、HEAD、OPTIONS 和 TRACE。