我都是,
身份验证后,我想将用户重定向到网址中指定的地址。 为此我实现了这段代码:
在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日志中可用。
答案 0 :(得分:2)
Spring安全应该自动执行此操作,除非您将其关闭。
如果用户没有指定网址,或者在成功登录后设置已关闭,则会将用户转到网址
grails.plugins.springsecurity.successHandler.defaultTargetUrl = ""
此设置您无法指定或设置为false。这表明每次用户登录时,无论他们在获得授权请求之前尝试访问哪个页面,都会将其重定向到默认目标URL。因此,如果我理解你是正确的,那么将其设置为false或者根本不指定它,并且你想要的功能应该有效。
grails.plugins.springsecurity.successHandler.alwaysUseDefault=true