Grails 会话超时后重定向到登录页面

Grails 会话超时后重定向到登录页面,grails,spring-security,session-variables,session-timeout,Grails,Spring Security,Session Variables,Session Timeout,我使用的是grails2.3.4和springsecuritycore2.0rc2和springsecurityui1.0rc1。每件事都很正常,但当出现会话超时时,我会出现以下错误“grail layout main中的错误”因为我在布局的main.gsp文件中调用了session变量。现在,我想在每次会话超时后重定向到登录页面,而不显示错误页面。要在会话超时后重定向,我已经在bootstrap.groovy文件中完成了 def structureMap1 = Requestmap.findB

我使用的是
grails2.3.4
springsecuritycore2.0rc2
springsecurityui1.0rc1
。每件事都很正常,但当出现会话超时时,我会出现以下错误
“grail layout main中的错误
”因为我在布局的main.gsp文件中调用了session变量。现在,我想在每次会话超时后重定向到登录页面,而不显示错误页面。要在会话超时后重定向,我已经在
bootstrap.groovy
文件中完成了

def structureMap1 = Requestmap.findByUrl("/institution/index") ?: new Requestmap(url: "/institution/index",configAttribute: "ROLE_INSTITUTION").save(failOnError:true)

但是有这么多的页面,所以很难为每一页都写。是否有其他方法可以执行此操作请提供帮助。

如何使用SecurityFilters您可以将其放置在您的conf文件夹中:

class SecurityFilters {
    def filters = {
        catchRememberMeCookie(url: "/**") {
            before = {

                if (!session.user) {
                    def g = new org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib()
                    def confirmurl= g.createLink(controller: controllerName, action: actionName, params:params,  absolute: 'true' )
                    session.lastURL=request.getHeader('referer') ?: confirmurl

                    redirect(controller:'auth',action:'denied')
                    return false
                }
     }
}
此部分是一个示例,不会回答您手边的问题,因为没有足够的信息给出详细的答案,但有一个安全过滤器-它位于所有请求之上,如果您需要它根据特定值重定向到另一个位置等,那么如果没有session.user,您可以这样做然后为你所有的行为负责