基于命名空间或URI的弹簧安全性

时间:2012-07-04 05:19:29

标签: java-ee spring-security authorization

我需要根据URI的命名空间实现授权。 例如,所有类型的用户都可以访问 localhost:8080 / common / * 只有管​​理员用户才能访问 localhost:8080 / admin / *

我已经使用UsernamePasswordAuthenticationFilter登录,但我不知道如何检查每个请求的授权。

有人可以指导我如何使用spring security实现这种授权吗?

谢谢&问候。

1 个答案:

答案 0 :(得分:0)

您可以使用

实现此目的
<intercept-url> element

intercept-url元素可用于定义使用ant路径样式语法与传入请求的URL匹配的模式。

例如使用Spring 3.0 +使用SpEL:

<http auto-config="true" use-expressions="true">
    <intercept-url pattern="/common/*" access="permitAll" />
    <intercept-url pattern="/registered/*" access="hasAnyRole('ROLE_USER,ROLE_ADMIN')" />
    <intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')" />
</http>

如果您没有SpEL支持,请使用如下:

<http auto-config='true'>
    <intercept-url pattern="/common/*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
    <intercept-url pattern="/registered/*" access="ROLE_USER,ROLE_ADMIN" />
    <intercept-url pattern="/admin/*" access="ROLE_ADMIN" />
</http>

Documentation

更新 - 如果您在JSP / JSP中进行转发,则需要在http元素上设置once-per-request =“false”。

另见: