Как именно перенаправить страницу после действия в контроллере (grails) - PullRequest
0 голосов
/ 14 октября 2019

Итак, у меня есть функция выхода из системы, и я хочу вернуться на страницу входа после выхода из системы. Мой контроллер называется 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]


}

1 Ответ

1 голос
/ 14 октября 2019

Но после выхода из системы он только обновляет страницу, а не направляет ее. Кстати, он создан с помощью плагина безопасности Spring.

У вас есть это:

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() вернет true (или что-то, что соответствует истине Groovy).

...