在Spring Security 3.0.2中从DB加载拦截URL

时间:2011-06-23 08:07:53

标签: java spring spring-security

我正在创建使用Spring Security的spring 3项目。

这是我当前上下文安全文件的一部分:

<http auto-config="true" use-expressions="true" >
    <intercept-url pattern="/login.htm" access="permitAll"/>
    <intercept-url pattern="/admin/*" access="hasRole('ROLE_ADMIN') and fullyAuthenticated"/>
    <intercept-url pattern="/hello*" access="hasRole('ROLE_ANONYMOUS')"/>

我想从DB(从某些DAO)加载所有这个URL。即我想动态检查任何网址的访问权限

我怎样才能以正确的方式做到这一点。

1 个答案:

答案 0 :(得分:2)

您可以使用Domain Object Security (ACLs)执行此操作。

或者您可以实现AbstractSecurityInterceptor的子类。

或者您可以在ad-hoc代码中执行此操作;即在控制器内某处实施访问检查,如果请求者没有所需权限,则抛出AuthenticationException

所有这些最终都会导致SpringSecurity过滤器在出路时捕获AuthenticationException并采取相应的措施;例如重定向到登录页面,或返回“拒绝访问”状态的响应。