[英]Using Spring Security ACL
我试图在我的应用程序中实现Spring Security ACL。 我有很多我想要使用ACL的类。
我在文档中读到AOP之前已经成功使用过。 这是否意味着所有服务都应该有一个公共接口,用于对对象进行CRUD以最大程度地重用该建议?
或者在保存,更新,删除服务方法中手动插入,删除...是否正常?
我无法找到许多人们如何使用框架的例子。
----实体删除的监听器(包括级联删除)-----
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);
}
}
这一切都取决于你的应用程序。 拥有集中的服务层次结构肯定会使创建/检索/更新/删除方法的单一安全性检查变得更加简单。 但是,您有一个不同服务的现有应用程序,不一定有一个共同的父实现,那么您必须在每个服务方法上添加ALC安全注释。
另一个选择是在你的DAO层上放置ACL安全性,它工作正常,但由于某种原因只是感觉不对。 恕我直言不应该处理安全问题。 我已经花了很多时间处理Spring Security ACL,现在已经很好地处理了它,如果你需要任何具体的例子,请给我打电话。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.