简单的文件浏览器权限

Simple file browser permissions

在网络项目中,我们有一个简单的文件浏览器。为了安全起见,我们需要某种映射哪些用户角色可以在哪些目录(包括它们的子目录)中读取 (R) 或读写 (RW)。

示例:

具有角色 A 的用户 A 可以查看文件夹 A/

中的文件

具有角色 B 的用户 B 查看和编辑文件夹 A/ 中的文件,还查看文件夹 B/


目前项目中使用的一些技术:

我一直在深入研究 Spring 安全性,但不确定我是否可以为我的用例使用 GrantedAuthority 实施(权限)。

所以我的问题是,是否有人有 Spring 安全方面的经验并能为我指出正确的方法。如果无法使用 Spring 安全性,其他库建议也很受欢迎,但我当然更喜欢使用已经在使用的库。

Spring 使用一些自定义代码的安全性是可能的。将您的服务层注释为:

@PostAuthorize("hasPermission(returnObject, 'READ')")
public FileObject readFileObject(String path) {
    // return the file object from DAO
}

@PreAuthorize("hasPermission(#fileObj, 'WRITE')")
public void writeFileObject(FileObject fileObj) {
    // write the file object, security check made at this point
}

实现PermissionEvaluator接口,使其成为Spring bean。然后在安全配置中启用它:

@Autowired
private PermissionEvaluator permissionEvaluator;

@Bean
public DefaultMethodSecurityExpressionHandler expressionHandler() {
    DefaultMethodSecurityExpressionHandler handler = new DefaultMethodSecurityExpressionHandler();
    handler.setPermissionEvaluator(permissionEvaluator);
    return handler;
}

并且:

<global-method-security pre-post-annotations="enabled">
  <expression-handler ref="expressionHandler" />
</global-method-security>