Stark использует Spring Security 2.0, как и плагин Acegi, а более новый плагин Spring Security Core использует Spring Security 3, поэтому все они используют в основном одни и те же библиотеки.
Нет концепцииКонфигурирование правил безопасности на уровне класса в Spring Security Core, но существует несколько подходов к указанию правил - аннотации (по умолчанию), карта в Config.groovy
, которая определяет все правила, и хранение правил в базе данных с экземплярами Requestmap.Они описаны в разделе «5 Настройка сопоставления запросов для защищенных URL-адресов» по адресу http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/
Например, вот как я могу преобразовать пример из документации по плагину Stark для использования аннотаций с Spring Security Core:
import grails.plugins.springsecurity.Secured
class BookController {
@Secured(['isAuthenticated()'])
def index = { Book.list() }
@Secured(['ROLE_EDITOR'])
def edit = {
// Some logic to edit a book
}
}
Существует одно важное различие в подходе между двумя плагинами.Stark запрещает доступ, если для URL не определено ни одного правила, поэтому вам нужно иметь сопоставления для всего.Это безопаснее, потому что если вы добавите новый контроллер и забудете отобразить его, аутентифицированные пользователи не смогут получить к нему доступ, поэтому ясно, что что-то не так.Чтобы включить это в Spring Security Core, просто добавьте строку
grails.plugins.springsecurity.rejectIfNoRule = true
в grails-app/conf/Config.groovy