无法使用graong数据库会话插件与mongodb

时间:2014-05-14 12:25:07

标签: grails grails-2.3

我们正在使用带有mongodb的grails 2.3.5 app(没有安装hibernate)。我曾经分叉过使用HQL查询修改grails数据库会话插件以使用简单查询以支持mongodb。

然后,当我尝试通过ajax登录时,它失败了。失败,我的意思是,创建和创建的会话持久到数据库但无法登录。当我启用日志时,我看到身份验证后请求路径/j_spring_security_check中存在Cookie但在重定向后不可用,即在路径/login/ajaxSuccess中导致身份验证被视为false&创建了一个新会话。

我们的URL映射配置如下所示:(无关紧要)

"/$controller/$action?/$id?(.$format)?" {
     constraints {
     }
}

"/v2/$customController/action/$customAction" {
    controller = {
        return params.customController?.toUpperCamelCase()
    }
    action = {
        return params.customAction?.toUpperCamelCase()
    }
}

"/v2/$resource/$resourceId?/$subResource?/$subResourceId?" {
    controller = {
        if (params.subResource) {
            return params.subResource.toUpperCamelCase()
        }
        return params.resource.toUpperCamelCase()
    }
    action = {
        Map actionMethodMap = [GET: params.resourceId ? "show" : "index", POST: "save", PUT: "update", DELETE: "delete"]
        return actionMethodMap[request.method.toUpperCase()]
    }
    id = {
        if (params.subResource && params.subResourceId) {
            return params.subResourceId
        }
        return params.resourceId
    }
}

我们的配置对于spring security来说是这样的:

grails.plugins.springsecurity.authority.className = 'com.test.Role'
grails.plugins.springsecurity.userLookup.userDomainClassName = 'com.test.User'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'com.test.UserRole'
grails.plugins.springsecurity.useSessionFixationPrevention = true

//grails.plugins.springsecurity.redirectStrategy.contextRelative = true
grails.plugins.springsecurity.successHandler.defaultTargetUrl = "/app/ng/index.html"
grails.plugins.springsecurity.auth.loginFormUrl = "/app/ng/index.html#/auth/signin"
grails.plugins.springsecurity.auth.ajaxLoginFormUrl = "/v2/login/action/auth-ajax"
grails.plugins.springsecurity.ui.encodePassword = false
grails.plugins.springsecurity.controllerAnnotations.staticRules = [
    '/j_spring_security_switch_user': ['ROLE_ADMIN'],
    '/ck/standard/filemanager':    ['ROLE_ADMIN'],
    '/ck/standard/uploader':    ['ROLE_ADMIN'],
    '/ck/ofm/filemanager':    ['ROLE_ADMIN'],
    '/ck/ofm/filetree':    ['ROLE_ADMIN'],
    '/quartz/**': ["ROLE_ADMIN"],
    '/**'          : ['IS_AUTHENTICATED_ANONYMOUSLY']
]

除此之外,grails.serverURL配置被注释为支持通配符子域的所有环境。

使用:

Spring Security Core插件版本1.2.7.3
Cookie插件版本0.51
Webxml插件版本1.4.1
Mongodb插件版本2.0.1

0 个答案:

没有答案