简单文件浏览器权限

时间:2015-10-14 09:42:24

标签: java spring-security permissions tapestry

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

的示例:

具有roleA的UserA可以查看folderA /

中的文件
  • roleA,“folderA /”,R

带有roleB的UserB查看和编辑folderA /中的文件,还可以查看folderB /

  • roleB,“folderA /”,RW
  • roleB,“folderB /”,R

到目前为止,该项目中使用了一些技术:

  • 挂毯
  • 休眠
  • Spring安全性(目前仅用于用户和角色)

我一直在寻找Spring Security,但我不确定是否可以在我的用例中使用GrantedAuthority实现(权限)。

所以我的问题是,如果有人有Spring Security的经验并且能够以正确的方式指出我。如果使用Spring Security无法实现,其他图书馆提案也会受到赞赏,但我当然更喜欢使用已经使用的库。

1 个答案:

答案 0 :(得分:2)

Spring Security可以使用一些自定义代码。将您的服务图层注释为:

C

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

@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
}

@Autowired
private PermissionEvaluator permissionEvaluator;

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