首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中实现权限控制?

如何在java中实现权限控制?
EN

Stack Overflow用户
提问于 2011-11-04 13:31:30
回答 4查看 1.8K关注 0票数 3

我们开发了一个应用程序,需要实现权限控制,这意味着某人只能在数据库中搜索特定的记录:

  1. 工作人员只能搜索自己的记录。
  2. 主管可以查他下属的记录。
  3. 主管可以看到批准申请的“批准”按钮。
  4. 而工作人员只能提交申请。

我知道spring安全性,但实际上我们如何使用spring安全性来实现上述功能呢?

我们可以使用SQL实现权限控制,这意味着首先选择他的角色,然后选择他下属的所有记录如下:

代码语言:javascript
复制
select * from table where staffid in (.......)   

但这种方法似乎过于粗糙,难以维护。因此,我的问题是,我们是否可以运用任何架构和做法来实施一个合理的许可管制机制?如何在应用程序中实现权限控制?

EN

回答 4

Stack Overflow用户

发布于 2011-11-04 14:15:05

1)员工只能搜索自己的记录。( 2)主管可以查找下属的记录。

这些似乎是您必须在DAO层实现的规则。

3)主管可以看到“批准”按钮来批准应用程序

-这可以通过JSF中基于UI角色的呈现来实现。

4)而工作人员只能提交申请.

这里可以使用Spring安全方法拦截器:http://static.springsource.org/spring-security/site/docs/3.0.x/reference/secure-object-impls.html

票数 2
EN

Stack Overflow用户

发布于 2011-11-04 13:41:42

使用postgres数据库,您可以从表继承表。即:

代码语言:javascript
复制
CREATE TABLE access{
  admin bool default false,
  supervisor bool default false,
  staff_user_id bigint default null,
   ...
}
CREATE TABLE flower(
  flower_id serial,
  name varchar(24)
)inherits (access)

然后,您可以创建一个更新/删除触发器和不同的连接-用户。

这可能是一个解决办法。

票数 0
EN

Stack Overflow用户

发布于 2011-11-04 13:43:47

正如您所说,实体“角色”和“业务数据”必须在DB中保持独立--而不是多次调用数据库,您的select查询可以加入角色表,只选择适当的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8009937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档