如何从过滤器访问grails中的UrlMapping变量



我使用的是Grails 2.1.5和Spring Security Core插件。我已经重写了WebSecurityExpressionRoot,将hasPermission方法的2个签名添加到web表达式范例中。此方法在applicationContext中按名称委托类,使用请求作为参数和任意字符串来调用它们,以提供进一步的详细信息(如果需要的话)。

在我的委托类中,我需要能够访问参数来评估用户是否可以访问请求的资源,这很好,但请求还不包含从UrlMappings定义的变量。

我曾尝试从applicationContext获取grailsUrlMappingsHolder,但当我用有效的uri调用它的match方法时,我一无所获。

我的时间不多了,如果没有有效的请求参数,我可能不得不自己解析request.getRequestURI()来尝试推断id,但这不会将URL映射到id不是最后一个的地方。

我真的不想在这里重新发明轮子,我也不想错过充分利用UrlMappings的机会,但它们定义的变量(在我的情况下)直到我进入控制器才可用。

看看我在AnnotationFilterInvocationDefinition中做了什么-您需要做一些设置:https://github.com/grails-plugins/grails-spring-security-core/blob/master/src/java/grails/plugin/springsecurity/web/access/intercept/AnnotationFilterInvocationDefinition.java

最新更新