【发布时间】:2014-10-06 11:48:30
【问题描述】:
我正在使用 Grails:2.3.5 和 Spring Security 核心插件:1.2.7.3
在 Grails 中,Spring Security RequestMap 是一个单独的表,但在我的应用程序中,我想将 requestMap 概念与现有表一起使用。
我有一个 RolePermissionMap 表,我想将此表用于 RequestMap。
class Role{
Long id
String name
String description
}
class Permission{
Long id
String name
String description
String requestUrl
}
class RolePermissionMap {
Long id
Role role
Permission permission
}
现在我通过扩展 RequestmapFilterInvocationDefinition 类来覆盖 loadRequestmaps() 方法,如下所示
class RolePermissionMapFilterInvocation extends RequestmapFilterInvocationDefinition {
@Override
protected Map<String, String> loadRequestmaps() {
Map<String, String> data = new HashMap<String, String>();
for (Object requestmap : ReflectionUtils.loadAllRequestmaps()) {
// Original code
//String urlPattern = ReflectionUtils.getRequestmapUrl(requestmap);
//String configAttribute = ReflectionUtils.getRequestmapConfigAttribute(requestmap);
//data.put(urlPattern, configAttribute);
// modified code
Permission permission = ReflectionUtils.getRequestmapUrl(requestmap);
Role role = ReflectionUtils.getRequestmapConfigAttribute(requestmap);
data.put(permission.getRequestUrl(), role.getName());
}
return data;
}
}
然后我将这个bean添加到resources.groovy中
beans = {
objectDefinitionSource(RolePermissionMapFilterInvocation)
}
我也在尝试重写 ReflectionUtils 类,以便根据需要获取 getRequestmapUrl(requestmap) 和 getRequestmapConfigAttribute() 方法的返回类型
当我使用这种方法运行时,出现以下异常
原因:org.springframework.beans.factory.BeanCreationException:创建名为“objectDefinitionSource”的bean时出错:调用init方法失败;嵌套异常是 java.lang.IllegalArgumentException: url matcher is required
为了解析 url 匹配器,我在 resources.groovy 中添加了一个 bean,但它失败了
我需要用 urlMaper 创建一个 bean 还是需要在任何地方提及 ReflectionUtils 类?
请告诉我一个方法..在此先感谢
【问题讨论】:
标签: spring grails spring-security