gpt4 book ai didi

java - 简单的文件浏览器权限

转载 作者:行者123 更新时间:2023-12-02 04:17:49 25 4
gpt4 key购买 nike

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

示例:

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

  • 角色A,“文件夹A/”,R

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

  • 角色B,“文件夹A/”,RW
  • 角色B,“文件夹B/”,R
<小时/>

该项目迄今为止使用的一些技术:

  • Tapestry
  • hibernate
  • Spring security(目前仅用于用户和角色)

我一直在进一步研究 Spring Security,但不确定是否可以为我的用例使用 GrantedAuthority 实现(权限)。

所以我的问题是是否有人有 Spring Security 的经验并且可以给我指出正确的方法。如果 Spring Security 无法实现,其他库建议也值得赞赏,但我当然更喜欢使用已经在使用的库。

最佳答案

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

@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接口(interface),使其成为 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>

关于java - 简单的文件浏览器权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33121878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com