1

我有一个 Java 程序,涉及需要具有不同权限的多个用户。我目前有一个带有基本 CRUD 方法的课程;每个都要求当前用户有权调用该方法。例如,用户可能有权调用“update”和“create”方法,但不能调用“delete”。所有用户都可以调用“读取”方法。

我想给每个用户一些使用方法的任意组合权限,所以我认为每个方法都应该检查用户的权限。但是,最好的方法是什么?每次调用时是否应将用户对象作为参数传递给方法,还是有更好的方法?我已经查看了SecurityManagerJava 中的类,但它似乎是针对小程序和文件系统权限的(这两个都不适用于我的情况)。这是正确的,还是我在这里错过了什么?

4

1 回答 1

2

是的,您正在寻找java.securityjavax.security.auth包。

基本上,该框架为您提供的是主体(可以进行身份​​验证的实体;用户或组)、凭据(密码、访问密钥、证书)和权限(也称为权限集或访问控制列表)的通用表示。

但老实说,这个框架往往会使事情复杂化。IMO 它提供的唯一有价值的便利是使用Subject.doAs()将安全上下文附加到线程。

身份验证的基本要点是确保某人是他们声称的人,而授权的基本要点是让某人只做他们被允许的事情。

如果您已经拥有自己的用户、密码和权限表示,我建议您保持简单。您需要做的就是将用户的 ID 和权限作为单个对象存储在其会话属性中,并使此信息可用于您的应用程序的业务逻辑以检查权限(通过作为参数传递)。它很简单,很明确,而且是高度可测试的。

于 2015-01-28T03:58:52.957 回答