У меня есть приложение grails 1.2, и я хочу использовать декларативную защиту для ограничения доступа на основе ролей. Я решил попробовать сиро, установил плагин, но когда я пытаюсь пройти аутентификацию, в заголовке появляется сообщение «Недопустимое имя пользователя и/или пароль». Я проверяю запись db и пользователь там с паролем sha'ed. Сообщения не отображаются ни в консоли, ни в файле stacktrace. Я добавил "warn 'org.jsecurity'" в Config.groovy без результатов. Любые подсказки/трюки для устранения этого?Проблема с аутентификацией с помощью сиро в grails app
ответ
Я столкнулся с этой проблемой, а также ... как вы сохранить пароль для пользователя? После выполнения быстрого старта, я последовал пример на странице плагина Shiro и добавил код в мою самозагрузке метод инициализации:
import org.apache.shiro.crypto.hash.Sha512Hash
def user = new ShiroUser(username: "user123", passwordHash: new Sha512Hash("password").toHex())
user.save()
Я хотел бы попытаться войти в системе и буду продолжать, чтобы получить не удалось Войти. Так что я попытался
def user = new ShiroUser(username:'admin', passwordHash:new Sha256Hash("admin").toHex())
user.save()
После перехода от Sha512Hash к Sha256Hash ... Я был в состоянии войти в систему!
UPDATE: только что созданное новое приложение с настройками настроек Shiro по умолчанию после запуска «быстрого запуска». Если вы хотите создать пользователя, вы захотите использовать Sha256Hash из коробки. Тем не менее, вы можете использовать Sha512Hash или Sha1Hash, добавив компонент в свой ресурс.groovy для Spring.
Пример Sha512Hash:
beans = {
bean {
credentialMatcher(Sha512CredentialsMatcher) {
storedCredentialsHexEncoded = true
}
}
}
Yep .. создал новое приложение Grails со свежей установкой плагина Shiro. Создал пользователя с паролемHash, установленным в Sha512Hash, а другой с Sha256Hash. Настройки по умолчанию установлены на Sha256Hash .. логин не удался с пользователем, установленным в Sha512Hash, и успешно вошел в систему с паролем пользователя, установленным на Sha256Hash! – mcroteau
Где я могу найти это в реальном плагине? – mcroteau
Вы запустили быстрый запуск? Используете ли вы базу данных по умолчанию?
Я бы отладил через Царство, которое вы используете, и посмотреть, что происходит.
я запустить быстрый старт и «ShiroUser» создается в DB через Bootstrap. Как я могу отлаживать сферу? Заранее спасибо. – xain
быстрый запуск должен был создать область по умолчанию. Как вы отлаживаете, зависит от вашей среды разработки, но вы можете запустить grails с помощью grails-debug run-app, и отладчик будет прослушивать порт по умолчанию. Вам просто нужно подключить к нему IDE и установить точку останова в grails-app/realms/ShiroDbRealm.groovy – leebutts
Я не могу помочь с устранением неполадок, но если вы ищете более мощное решение, вы можете проверить ловкость. Он основан на сиро и предлагает множество дополнительных функций и гибкости.
Вы можете установить последнюю версию с:
grails install-plugin nimble 0.4-SNAPSHOT
. Самые последние проворные документы находятся здесь http://snimavat.github.io/nimble/index.html –
Добавлена информация «grails.app, org.apache.shiro» в конфиг не повезло – xain