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,您可以这样做然后为你所有的行为负责