java - 使用 Spring Security ACL

标签 java spring jakarta-ee spring-mvc spring-security

我正在尝试在我的应用程序中实现 Spring Security ACL。我有许多要在其上使用 ACL 的类。

我在文档中看到,AOP 之前已经成功使用过。这是否意味着所有服务都应该有一个公共(public)接口(interface)来对对象进行 CRUD 以最大限度地重用建议?

或者在服务的save,update,delete方法中手动insert,delete,...是否正常?

我找不到很多关于人们如何使用该框架的例子。

最佳答案

---- 实体删除的监听器(包括级联删除)-----

package com.acme.model.aspects;

import javax.annotation.PostConstruct;
import javax.persistence.PreRemove;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import org.springframework.data.domain.Persistable;

import com.acme.PermissionService;

@Component
public class ObjectIdentityListener {

    private static final Logger LOG = LoggerFactory.getLogger(ObjectIdentityListener.class);

    static private PermissionService permissionService;

    @Autowired(required = true)
    @Qualifier("permissionService")
    public void setSearchService(PermissionService _permissionService)
    {
        permissionService = _permissionService;
    }

    @PreRemove
    public void preRemove(Object object) {
        if(object instanceof Persistable) {
            LOG.info("Deleting object identity for class {} id {} ", persistable.getClass(), persistable.getId());
            permissionService.deleteObjectIdentity((Persistable) object);
        }
    }

    @PostConstruct
    public void init() {
        Assert.notNull(permissionService, "'permissionService' is required");
    }
}

---- permissionService的删除方法----

public void deleteObjectIdentity(Persistable persistable) {
    try{
        MutableAcl acl = (MutableAcl) mutableAclService.readAclById(identity(persistable));
        mutableAclService.deleteAcl(acl.getObjectIdentity(), true);
    } catch (NotFoundException e){
        LOG.info("Could not find ACL for target {}", persistable);
    }
}

关于java - 使用 Spring Security ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21340310/

相关文章:

java - 在 WEB-INF 目录下移动 JSP 时出现问题

jsf - Wicket vs GWT - 需要建议

jakarta-ee - Weblogic 错误 403——禁止

Java - 当字符串很大时,hashCode() 函数如何输出小(或负)数

java - Android Studio 向导未显示

java - EBean增强专家

java - 使用 spring web 发送带有 post 数据的 https post 请求

java - Maven 解析的版本与传递依赖中的版本不匹配

java - 扩展父类(super class)的子类如何调用父类的构建器

java - Jface KeyListener 未激活