我正在创建使用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。即我想动态检查任何网址的访问权限
我怎样才能以正确的方式做到这一点。
答案 0 :(得分:2)
您可以使用Domain Object Security (ACLs)执行此操作。
或者您可以实现AbstractSecurityInterceptor
的子类。
或者您可以在ad-hoc代码中执行此操作;即在控制器内某处实施访问检查,如果请求者没有所需权限,则抛出AuthenticationException
。
所有这些最终都会导致SpringSecurity过滤器在出路时捕获AuthenticationException
并采取相应的措施;例如重定向到登录页面,或返回“拒绝访问”状态的响应。