0

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

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

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

感谢和问候。

4

1 回答 1

0

您可以使用

<intercept-url> element

intercept-url 元素可用于定义一个模式,该模式使用 ant path 样式语法与传入请求的 URL 匹配。

例如使用 SpEL 的 Spring 3.0 +:

<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>

文档

更新- 如果您在 JSP/JSP 中进行转发,则需要在 http 元素上设置一次每次请求 =“false”。

也可以看看:

于 2012-07-04T06:06:11.667 回答