1. Приложение сдаётся заказчику, и он должен иметь возможность сам создавать роли и назначать им соответствующие права. Пересобирать приложение и перезагружать его он не будет.
2. Будет админская (единственная известная заранее) роль. Первоначально базу можно заполнить и при помощи sql запросов.
вы путаете role specification, role mapping и role assignment. role specification - т.е. указание, какие роли какие методы могут вызывать - вещь довольно статическая и задается на уровне дизайна. я не видел, чтобы кто-то парился от перезагрузки-передеплоя, который при этом необходим.
role mapping - какие роли каким эквивалентны, какие роли у каких наследуют. сие можно реализовать динамически, но не имеет отношения к "какие методы вызывать". это задается на уровне бизнес логики.
role assignment - какие юзера в какие роли мапятся. сие тоже динамическое и driven by бизнес логика.
хм, возможно, задавать эквивалентность ролей, это выход.
Я правильно понимаю, что, если я хочу достигнуть поставленной задачи, мне придётся завести большую кучу ролей для role specification? То есть, к примеру, для справочников книг, пользователей завести роли: ROLE_BOOKS_EDIT, ROLE_BOOKS_READ, ROLE_BOOKS_REPORT, ROLE_USERS_EDIT, ROLE_USERS_READ,.. и т.д. для каждого справочника по несколько своих ролей. И для них уже указывать, какие методы каких классов они могут вызывать.
А потом уже маппить роли как захочу: "зав. склада" -> "ROLE_BOOKS_EDIT, ROLE_BOOKS_READ, ROLE_USERS_READ" и т.д.? (пример вымышленный)
2. если все настолько динамично, как вы собираетесь обслуживать запросы, которые начались ДО изменения ролей?
Reply
2. Будет админская (единственная известная заранее) роль. Первоначально базу можно заполнить и при помощи sql запросов.
Reply
role mapping - какие роли каким эквивалентны, какие роли у каких наследуют. сие можно реализовать динамически, но не имеет отношения к "какие методы вызывать". это задается на уровне бизнес логики.
role assignment - какие юзера в какие роли мапятся. сие тоже динамическое и driven by бизнес логика.
Reply
Я правильно понимаю, что, если я хочу достигнуть поставленной задачи, мне придётся завести большую кучу ролей для role specification?
То есть, к примеру, для справочников книг, пользователей завести роли: ROLE_BOOKS_EDIT, ROLE_BOOKS_READ, ROLE_BOOKS_REPORT, ROLE_USERS_EDIT, ROLE_USERS_READ,.. и т.д. для каждого справочника по несколько своих ролей.
И для них уже указывать, какие методы каких классов они могут вызывать.
А потом уже маппить роли как захочу: "зав. склада" -> "ROLE_BOOKS_EDIT, ROLE_BOOKS_READ, ROLE_USERS_READ" и т.д.?
(пример вымышленный)
Reply
Reply
Leave a comment