Группа и acl на безопасности Spring

Я хочу использовать безопасность Spring для управления пользователем, группой и полномочиями.

Я хочу использовать ACL для обеспечения моих объектов области, но я не могу найти способ присвоить группу acl.

Например: у меня есть пользователи и группы. У каждой группы могут быть следующие ценные бумаги: - справляются, форумы (может быть роль как ROLE_FORUM_MANAGER) - редактируют определенный форум (acl на определенном форуме).

Кроме того, Группы определяются пользователями, которые имеют роль ROLE_PERMISSION_MANAGER. НО все группы, определенные этим пользователем, могут только редактироваться и управляться этим пользователем. Так группа присоединены к пользователю. Точно, предположите, что пользователь создает группу Google: этот пользователь может управлять правильными группами разрешения только для группы, которую он создал. И таким образом, он может создать группу для управления определенным форумом ее собственной группы Google.

Как я могу сделать это?

Я прочитал пружинные документы безопасности и следующие учебные руководства (поэтому не отправляйте меня в эти ссылки): http://grzegorzborkowski.blogspot.com/2008/10/spring-security-acl-very-basic-tutorial.html http://blog.denksoft.com/?page_id=20

7
задан ekad 3 May 2017 в 10:30
поделиться

3 ответа

Вы объявили анонимную функцию с помощью

function(){

. Вы должны объявить ее как

function testfunc(){

, чтобы напечатать имя.

public class ForumPermissionEvaluator implements PermissionEvaluator {

    public boolean hasPermission(Authentication authentication,
            Object domainObject, Object permission) {
        //implement
    }

    public boolean hasPermission(Authentication authentication, 
            Serializable targetId, String targetType, Object permission) {
        //implement
    }
}

Наконец, соедините это вместе в конфигурации приложения:

<beans:bean id="expressionHandler"
    class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler">
  <beans:property name="permissionEvaluator" ref="permissionEvaluator"/>
</beans:bean>

<beans:bean id="permissionEvaluator"
    class="com.centrix.core.security.GroupPermissionEvaluator" />
14
ответ дан 6 December 2019 в 11:49
поделиться

Я бы просто использовал ваш Группы любят роли. Я обнаружил, что реализация Spring ACL довольно громоздка и по большей части непригодна для использования. Просто распределите пользователей по «группам» (фактически роли) и проверьте их, как при обычной авторизации на основе ролей.

2
ответ дан 6 December 2019 в 11:49
поделиться

Я сделал кое-что подобное 'вручную': т.е. у меня был свой код, чтобы определить, какие экземпляры могут быть отредактированы/удалены определенным пользователем, и я полагался только на Spring security, чтобы убедиться, что у них есть правильная роль для доступа к функциональности и для предоставления информации о роли/аутентификации для текущего пользователя.

Таким образом, в своем коде я определил текущий принцип (наш собственный класс User) и на основании этого я решил, какими правами обладает этот пользователь на конкретном экземпляре.

public static User getCurrentUser() {
    User user = null;
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    if (auth != null) {
        Object principal = auth.getPrincipal();
        if (principal instanceof User) {
            user = (User)principal;
        }
    }
    return user;
}
1
ответ дан 6 December 2019 в 11:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: