Изменить страницу входа в плагин безопасности Spring с помощью Grails

Я устанавливаю плагин безопасности Spring следующим образом:

compile ":spring-security-core:2.0-RC4"

Добавьте следующую строку в Config.groovy

grails.plugins.springsecurity.auth.loginFormUrl = '/'
grails.plugins.springsecurity.failureHandler.defaultFailureUrl = '/'

Но я не могу перенаправить на домашнюю страницу, используя это.

Так в каком месте я ошибаюсь?

Спасибо.


person 007    schedule 06.12.2014    source источник


Ответы (2)


grails.plugins.springsecurity.auth.loginFormUrl = '/' 
grails.plugins.springsecurity.failureHandler.defaultFailureUrl = '/'

В этом. Вы устанавливаете свою домашнюю страницу как URL-адрес для входа. Теперь вы должны отправить данные для входа на url: '/' Просто сотрите эти поля или используйте другие.

person Koloritnij    schedule 06.12.2014
comment
В моем файле UrlMappings.groovy я установил /(controller:/dashboard) . Но страница не перенаправляется. - person 007; 06.12.2014
comment
потому что вы сопоставляете весеннюю безопасность с этим URL-адресом. Просто удалите или отредактируйте две последние строки в своем вопросе и повторите попытку. - person Koloritnij; 06.12.2014

Spring Security использует «/» в качестве Uri успеха по умолчанию и «/login/ajaxSuccess» для аутентификации ajax. auth.loginFormUrl дает URL-адрес страницы входа, значение которого по умолчанию равно «login/auth». Подключаемый модуль безопасности использует класс LoginController.groovy для управления аутентификацией входа.

Вы определили «панель управления» контроллера для «/», которая в вашем случае одинакова как для loginFormUrl, так и для URL-адреса успешного входа (по умолчанию). Поэтому вам необходимо реализовать логику для перенаправления в другое место в контроллере панели. Или вы можете использовать разные URL-адреса для loginURL и SuccessUrl.

Определите класс контроллера и реализуйте логику в соответствии с ролью

def springSecurityService

def index() {
    User user = springSecurityService.currentUser
    if (user) {
        if (user.authoritiesInString.contains(Authorities.ROLE_ADMIN)) {
            render "admin login "
        } else if (user.authoritiesInString.contains(Authorities.ROLE_USER)) {
            render "user login"
        }
    } else {
        redirect(uri: '/login')
    }

}

В вашем URLmapping.groovy определите сопоставление для «/», которое является обработчиком успеха по умолчанию.

static mappings = {
    "/$controller/$action?/$id?(.$format)?"{
        constraints {
            // apply constraints here
        }
    }
    "/login" controller: 'login', action: 'auth'

    "/" controller: 'main', action: 'index'


}

Плагин безопасности Spring предоставляет функцию переопределения многих URL-адресов, которые можно найти здесь http://grails-plugins.github.io/grails-spring-security-core/guide/urlProperties.html

person InvincibleElf    schedule 07.12.2014