Почему регистрация нового пользователя с помощью плагина ACEGI для GRAILS дает «Роль по умолчанию не найдена». ошибка - PullRequest
1 голос
/ 12 января 2010

Возможно, по-другому, как мне установить роль безопасности по умолчанию для новых зарегистрированных пользователей в Grails с помощью плагина ACEGI?

Я следовал учебному пособию по acegi / grails здесь и использую аннотации контроллера - хотя я еще ничего не защитил.

Я добавил вторую роль WEB_USER и успешно добавил пользователя в эту роль.

Когда я используюзарегистрируйте контроллер для другого нового пользователя, однако я получаю сообщение об ошибке от Grails, в котором говорится: "Default role not found".

. Я мог видеть, как я могу примерно из этого выйти, обрабатывая пустой список ролей в соответствующейсоздать метод или даже опубликовать имя роли по умолчанию обратно как скрытое поле в представлении регистрации, но они выглядят не как Grails.

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

Что означает средство для определения роли по умолчаниюи почему я получаю это сообщение.

О, и как вы произносите acegi?

Ответы [ 2 ]

2 голосов
/ 12 января 2010

Это проблема с документацией. Страница регистрации не позволяет вам выбирать роли, поскольку ожидается, что это будет общедоступная страница регистрации. При создании пользователя требуется как минимум одна роль, поэтому ожидается, что для этого рабочего процесса настроена роль «по умолчанию».

Вы можете установить роль по умолчанию в SecurityConfig.groovy с атрибутом defaultRole. По умолчанию это ROLE_USER, но это может быть что угодно. Прежде чем пользователи смогут зарегистрироваться, должен быть экземпляр Authority с этим значением.

произношение есть в FAQ - http://www.acegisecurity.org/faq.html

0 голосов
/ 12 января 2010

Я нашел ответ. Как правило, в Grails есть роль по умолчанию, которая называется ROLE_USER. Когда вы регистрируете нового пользователя, он ищет роль с этим именем и, если он находит ее, назначает ее пользователю.

Сообщение "Роль по умолчанию не найдена" неоднозначно в том, как его можно прочитать.

Сначала я подумал, что это означает, что «вам нужно где-то определить роль по умолчанию, чтобы ей были назначены новые зарегистрированные пользователи».

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

Мне кажется, что часть поколения функций безопасности Grails должна просто как-то добавить ROLE_ADMIN и ROLE_USER в загрузчик базы данных и справиться с возможностью ошибки.

...