grails - spring security - get save属性不起作用

时间:2013-09-17 11:59:26

标签: grails spring-security login-control

我都是,

身份验证后,我想将用户重定向到网址中指定的地址。 为此我实现了这段代码:

在loginController中:

def auth = {        
   def savedRequest = session.getAttribute(WebAttributes.SAVED_REQUEST)  

...}

和config.groovy:

grails.plugins.springsecurity.useSecurityEventListener = true

grails.plugins.springsecurity.onAuthenticationSuccessEvent = { e, appCtx ->

def savedRequest = session.getAttribute(WebAttributes.SAVED_REQUEST);
String requestUrl = savedRequest.getRedirectUrl()
}

grails.plugins.springsecurity.successHandler.defaultTargetUrl = requestUrl 

提交登录后我有这个错误:

输入例外报告

消息

description服务器遇到内部错误(),导致无法完成此请求。

例外

  

org.codehaus.groovy.runtime.InvokerInvocationException:   groovy.lang.MissingMethodException:没有方法签名:   groovy.util.ConfigObject.getAttribute()适用于参数   types:(groovy.util.ConfigObject)values:[[:]]     java.util.concurrent.ThreadPoolExecutor中的$ Worker.runTask(ThreadPoolExecutor.java:886)     java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:908)     java.lang.Thread.run(Thread.java:619)根本原因

     

groovy.lang.MissingMethodException:没有方法签名:   groovy.util.ConfigObject.getAttribute()适用于参数   types:(groovy.util.ConfigObject)values:[[:]]     script1379418399441191405188 $ _run_closure3.doCall(script1379418399441191405188.groovy:154)     java.util.concurrent.ThreadPoolExecutor中的$ Worker.runTask(ThreadPoolExecutor.java:886)     java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:908)     java.lang.Thread.run(Thread.java:619)注意完整的堆栈跟踪   根本原因在Apache Tomcat / 7.0.25日志中可用。

1 个答案:

答案 0 :(得分:2)

Spring安全应该自动执行此操作,除非您将其关闭。

如果用户没有指定网址,或者在成功登录后设置已关闭,则会将用户转到网址

grails.plugins.springsecurity.successHandler.defaultTargetUrl = ""

此设置您无法指定或设置为false。这表明每次用户登录时,无论他们在获得授权请求之前尝试访问哪个页面,都会将其重定向到默认目标URL。因此,如果我理解你是正确的,那么将其设置为false或者根本不指定它,并且你想要的功能应该有效。

grails.plugins.springsecurity.successHandler.alwaysUseDefault=true