4

Я перемещаюсь от grails 2.2.2 до grails 2.3.4, чтобы избежать ошибки в 2.2.2, где текстовое значение в сообщениях свойств безопасности весны не отображается, но я сталкиваюсь со всеми проблемами. Материал, который работал раньше, теперь нет.Как сделать логин/страницу в Grails Spring Security 2.0 встроенным экраном?

ПРОБЛЕМА

При запуске приложения Grails, начальная страница по умолчанию index.gsp который является стандартной функциональностью, но после установки и настроек основных родник безопасности, пружинная безопасность Ldap и весной securiy Ui плагины I хотел бы сделать /login/auth моей страницей по умолчанию.

В предыдущем выпуске я это сделал через конфигурационный файл UrlMappings.groovy просто комментируя, замены или удаления этой строки

"/"(view:"/index") 

для этого одного

"/"(view:"/login/auth") 

My Config .groovy установлен таким образом, что если аутентификация удастся забрать меня на домашнюю страницу

grails.plugin.springsecurity.userLookup.userDomainClassName = 'security.Person' 
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'security.PersonAuthority' 
grails.plugin.springsecurity.authority.className = 'security.Authority' 
grails.plugin.springsecurity.requestMap.className = 'security.Requestmap' 
grails.plugin.springsecurity.securityConfigType = 'Requestmap' 
grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/home/' 

и мои записи Requestmap в Bootstrap (если они имеют какое-либо значение для этого вопроса являются):

for (String url in [ 
     '/', '/index', '/index.gsp', '/**/favicon.ico', 
     '/**/js/**', '/**/css/**', '/**/images/**', 
     '/login', '/login.*', '/login/*', 
     '/logout', '/logout.*', '/logout/*']) { 
    new Requestmap(url: url, configAttribute: 'permitAll').save() 
    } 

    new Requestmap(url: '/home/*', configAttribute: 'IS_AUTHENTICATED_FULLY').save() 

Оказывается, что, когда я это сделать ... Eureka Логин/авторизация приходит как только приложение запускается, но когда я помещаю правильные удостоверения подлинности, он, похоже, не аутентифицируется, он делает «небольшое небольшое мерцание», и он снова показывает себя.

Однако, если я удалить эту строку

"/"(view:"/login/auth") 

и поставить этот назад в

"/"(view:"/index") 

, а затем, когда я перезапустить приложение I вручную входа/Идент и поставить правильный учетные данные, то он правильно ведет меня на домашнюю страницу.

ВОПРОСЫ
  1. ли я пропустить любой конфигурации установки в любом месте, что бы сделать логин/аутентификации первую страницу (но также позволяет мне подлинность)?

  2. Я не уверен, что это должен быть отдельный размещенный вопрос, но теперь по дизайну страница входа в систему является частью плагина, прежде чем она была сгенерирована и часть моего кода, и я мог бы стилизовать по моей воле. Должен ли я скопировать пасту LoginController и Auth.gsp в мое приложение, чтобы настроить представление или есть лучший предпочтительный способ?

Заранее спасибо.

ответ

3

Механизм аутентификации в Spring Security работает, отслеживая URL-адрес реферала, когда отображается страница входа в систему. А затем перенаправляйтесь на эту страницу при успешном входе в систему. Если вы хотите, чтобы страница входа в систему отображалась на первой странице, которую люди видят, просто сделать корневой вид требуемой аутентификацией. Я предполагаю, что большинство, если не все, вашего приложения требуют аутентификации. Если это так, вам не нужно делать страницу входа в систему корневым представлением. Предполагая, что все под /home/* заблокировано, Spring Security обнаружит это и сразу же перенаправит страницу входа, когда запрашивается любая из защищенных страниц.

Короче говоря, вы делаете это сложнее, чем должно быть.

Что касается вашего второго вопроса, я полагаю, вам просто нужно создать свои собственные версии этих файлов в своем приложении, чтобы их настроить.

+0

Когда вы сказали «Spring Security работает отслеживание в URL перенаправления», вы освещаете до лампочки. Я смог настроить экран входа в систему, просто создав папку для входа под представлениями и свой собственный auth.gsp. Не нужно копировать LoginController на мою базовую базу – Viriato

+0

Спасибо, что «Spring Security работает, отслеживая URL-адрес реферала» помогла мне разобраться с проблемой моего приложения. Страница входа в систему была перенаправлена ​​на URL-адрес, который был вызван Javascript на странице по умолчанию, которая была показана до того, как пользователи перешли на страницу входа по ссылке. Оказывается, этот URL-адрес не был доступен скрипту, поскольку он был защищен Spring Security; предположительно, при неудачной попытке Spring Security запомнила URL-адрес после входа в систему. С вашей подсказкой я добавил этот URL-адрес в список доступных страниц без входа. Все хорошо. – HumanInDisguise

1

Эй, я не уверен, что о вашей проблеме, но вы можете попробовать сделать логин по умолчанию URL-/login/auth по

grails.plugin.springsecurity.auth.loginFormUrl = '/login/auth' 

 Смежные вопросы

  • Нет связанных вопросов^_^