0

我们正在为大学图书馆开发客户端和服务器应用程序。除了所有图书管理和借阅功能外,应用程序还必须能够管理用户。

我们决定了3 种不同的用户类型

  1. 客人(可查看基本信息)
  2. 登录用户(访问基本功能,如借书)
  3. 管理员(完全访问权限,包括管理书籍和用户)

这是我的第一个更大的项目,尽管我阅读了许多 Java 讲座,但我无法决定在客户端*对以下需求建模的好方法:

  • 客户端应用程序必须管理当前登录。当前用户可能会更改他们的基本信息。
  • 管理员可以更改所有信息

现在我的问题:每个 User 类都应该有 getter 和 setter,即使当前用户可能只是访客?如果调用 setXY() 而没有更改信息的权限,会发生什么情况?授权应该在代码中的什么地方发生?用户等级?服务器 API 类?

像这样的现有模型的示例或链接将非常有帮助。提前致谢。

4

2 回答 2

2

一种方法是使用继承,即基本抽象用户类和 AnonymousUser、GuestUser 和 AdminUser。每个类都扩展了其父类的能力。这适用于简单的场景,但它不灵活,并且之后特别难以扩展。

更好的解决方案是创建一个实现所有必需功能的 User 类(在前面的示例中为 AdminClass),并将其包装在一个代理中,该代理知道不同的用户角色并可能限制对单个方法的访问。

这些检查应始终在服务器上进行,因为您无法阻止来自恶意客户端的请求。

于 2012-06-02T15:32:22.910 回答
1

只是好奇-这是家庭作业吗?你不是说你正在为一所真正的大学创建一个真正的系统,它将在生产中运行,对吗?

我认为您需要基于角色的安全解决方案,而不是类层次结构。我建议不要自己滚动并使用 Spring Security 之类的东西。

我要补充一点,你也应该使用 Spring。它将使该应用程序变得更好。

于 2012-06-02T14:43:55.040 回答