在控制器(grails)中执行操作后如何精确重定向页面
How exactly redirect page after action in the controller (grails)
所以我有注销功能,我想在注销后return登录页面。我的控制器名为 LoginController.groovy。但在注销后它只刷新页面而不是定向它。顺便说一句,它是由 spring 安全插件创建的。
/**
* go to login page when successful logout.
*/
def logout() {
if(request.logout()) // Logout current user
redirect(controller: 'Login', action: 'index') // Redirect to the login page
}
/**
* Default action; redirects to 'defaultTargetUrl' if logged in, /login/auth otherwise.
*/
def index() {
if (springSecurityService.isLoggedIn()) {
redirect controller:'Login', action:'homepage'
}
else {
redirect action: 'auth', params: params
}
}
/**
* Show the login page.
*/
def auth() {
def config = SpringSecurityUtils.securityConfig
if (springSecurityService.isLoggedIn()) {
//redirect uri: config.successHandler.defaultTargetUrl
redirect controller:'Login', action:'homepage'
}
String view = 'auth'
String postUrl = "${request.contextPath}${config.apf.filterProcessesUrl}"
render view: view, model: [postUrl: postUrl,rememberMeParameter: config.rememberMe.parameter]
}
But after logout it only refresh the page and not direct it. Btw, it
created by spring security plugin.
你有这个:
def logout() {
if(request.logout())
redirect(controller: 'Login', action: 'index')
}
这相当于:
def logout() {
if(request.logout()) {
redirect(controller: 'Login', action: 'index')
} else {
render view: 'logout', model: [:]
}
}
这意味着重定向只会在 .logout()
returns true
(或某些计算结果为 Groovy 的情况下发生)。
所以我有注销功能,我想在注销后return登录页面。我的控制器名为 LoginController.groovy。但在注销后它只刷新页面而不是定向它。顺便说一句,它是由 spring 安全插件创建的。
/**
* go to login page when successful logout.
*/
def logout() {
if(request.logout()) // Logout current user
redirect(controller: 'Login', action: 'index') // Redirect to the login page
}
/**
* Default action; redirects to 'defaultTargetUrl' if logged in, /login/auth otherwise.
*/
def index() {
if (springSecurityService.isLoggedIn()) {
redirect controller:'Login', action:'homepage'
}
else {
redirect action: 'auth', params: params
}
}
/**
* Show the login page.
*/
def auth() {
def config = SpringSecurityUtils.securityConfig
if (springSecurityService.isLoggedIn()) {
//redirect uri: config.successHandler.defaultTargetUrl
redirect controller:'Login', action:'homepage'
}
String view = 'auth'
String postUrl = "${request.contextPath}${config.apf.filterProcessesUrl}"
render view: view, model: [postUrl: postUrl,rememberMeParameter: config.rememberMe.parameter]
}
But after logout it only refresh the page and not direct it. Btw, it created by spring security plugin.
你有这个:
def logout() {
if(request.logout())
redirect(controller: 'Login', action: 'index')
}
这相当于:
def logout() {
if(request.logout()) {
redirect(controller: 'Login', action: 'index')
} else {
render view: 'logout', model: [:]
}
}
这意味着重定向只会在 .logout()
returns true
(或某些计算结果为 Groovy 的情况下发生)。