2017-01-04 3 views
1

Я разрабатываю приложение с использованием Grails и Spring Security.Grails - Spring Security - много динамических ролей

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

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

Я видел, что Spring Security имеет функцию Callmap, которая для каждого URL-адреса может указывать роли, которые будут иметь доступ.

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

У вас, ребята, есть несколько советов, как решить эту проблему?

Благодарим за всех.

ответ

0

Вы должны посмотреть на Spring Security ACL plugin.

С помощью этого плагина вы сможете добавлять разрешения (например, разрешение на чтение или чтение) определенным пользователям на определенных моделях домена.

Посмотрите на пример из документации:

@Transactional 
@PreAuthorize("hasPermission(#report, write) or " + 
      "hasPermission(#report, admin)") 
Report updateReport(Report report, params) { 
    report.properties = params 
    report.save() 
    report 
} 

PreAuthorize с помощью аннотаций проверяется, если пользователь имеет запись (или администратора) разрешение на этот определенный Report лица.

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