2012-07-04 40 views
0

我需要基于URI的命名空间来实现授权。 例如,本地主机:8080 /普通/ * 将所有类型的用户和访问 本地主机:8080 /管理/ *将是唯一的管理员用户访问。基于命名空间或基于URI的弹簧安全

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

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

谢谢&此致敬礼。

回答

0

可以使用

<intercept-url> element 

截距-url元素可以用来定义针对被使用蚂蚁路径风格的语法的传入请求的网址匹配的图形实现这一点。

例如使用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> 

如果你没有规划环境地政司的支持,然后使用这样的:

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

参见:

+0

感谢您的答复。其实我已经尝试过相同的代码,但是这种授权只发生在登录(身份验证)时,稍后它不会针对每个请求发生。 – SmartSolution

+0

所以我认为你正在JSP/JSF页面中进行转发。我已经更新了答案! – Ravi