0

我的团队将开发一个内部(已知用户)应用程序,该应用程序的架构基于 Java 作为前端,PL/SQL 作为后端。因此,目前我们正在考虑一种更好的解决方案来管理用户/权限,我们有两种选择:

  1. 每个用户都有自己的数据库帐户,并被授予权限。目前遗留系统使用这种方法,我不喜欢它,因为它基于数据库对象的粒度来管理权限。所以,我认为每个用户都有一个数据库连接是一个糟糕的选择。你能在这里看到更多的缺点吗?

  2. 在数据库中构建一些表来存储用户及其权限/配置文件,并构建一个 PL/SQL 过程来进行登录,生成一个令牌并包含一个参数给所有其他 PL/SQL 以验证这个令牌,然后授权(或不授权)执行。

所以,你可以问我:为什么不在你的网络应用程序中管理你的权限呢?回答:那些 PL/SQL 已经完成并被所有遗留系统使用,并且这个 Web 应用程序应该按照它运行(即,用户权限应该由 PL/SQL 管理,其粒度基于 please。)

在这种情况下,您将如何进行?

4

1 回答 1

1

我认为使用数据库的内置机制总是优于滚动我们自己的机制。这同样适用于登录用户。

专用用户帐户的最大单一优势是我们可以将给定会话与指定用户链接。嗯,是的,呃。但关键是,在具有通用帐户的 Web 应用程序中,像审计用户活动或跟踪某些流程中的性能问题这样的思考要困难得多。

为了解决您的主要反对意见,我们不必在用户级别管理数据库权限。这就是为什么我们有角色。对于普通用户,角色将提供足够的权限。

所以:

  1. 定义一组与您的应用程序服务的各种业务工作相匹配的角色。
  2. 向这些角色授予系统和对象权限;请记住,角色可以是附加的(即我们可以将一个角色的权限授予另一个角色)。
  3. 授予用户角色。

了解更多

于 2011-09-16T06:55:18.297 回答