从数据库或属性中获取Spring Security拦截URL

希望这是超级简单的,存在的,我正在忽略我鼻子底下的东西。 我知道我可以通过注释限制访问:

@Secured({"ROLE_ADMIN"}) 

或通过配置:

  

我更愿意从数据库中获取身份validation规则,例如:

     

最糟糕的情况是,必须有一种通过属性文件填充的方法吗?…

/admin/**=ROLE_ADMIN
/**=ROLE_USER

  

等等

请告诉我这存在或我的大脑会爆炸! Grails spring-security插件开箱即用,所以我知道这必须存在。 请不要让我的大脑爆炸!

编辑:

弄清楚了…

您必须提供自定义org.springframework.security.intercept.web.FilterSecurityInterceptor并提供objectDefinitionSource

       CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON PATTERN_TYPE_APACHE_ANT /**login.html=IS_AUTHENTICATED_ANONYMOUSLY /user/**=ROLE_ADMIN    

我想我将使用FactoryBean:

 public class RequestMappingFactoryBean implements FactoryBean { private final static String EOL = System.getProperty("line.separator"); public Object getObject() throws Exception { StringBuffer sb = new StringBuffer(); sb.append("CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON"); sb.append(EOL); sb.append("PATTERN_TYPE_APACHE_ANT"); sb.append(EOL); sb.append("/**login.html=IS_AUTHENTICATED_ANONYMOUSLY"); sb.append(EOL); sb.append("/user/**=ROLE_ADMIN"); return sb.toString(); } @SuppressWarnings("unchecked") public Class getObjectType() { return String.class; } public boolean isSingleton() { return true; } } 

把它传给DAO等

        

已经有一段时间了,但是你可以创建一个Voter对象来帮助决定是否允许访问URL。 Voter对象可以从数据库或文件加载数据,或者只是随机返回Allow,Deny或Abstain。

你想在spring的xml中使用这样的东西吗?

    /WEB-INF/config.properties   

然后在你的Spring XML中als: