【问题标题】:Best practice for modelling a user class in a client-server-environment在客户端-服务器-环境中为用户类建模的最佳实践
【发布时间】:2012-06-07 10:51:45
【问题描述】:

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

我们决定三种不同的用户类型:

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

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

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

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

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

【问题讨论】:

    标签: java model client-server modeling


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2020-08-15
        • 1970-01-01
        • 2020-11-11
        • 2012-05-24
        • 1970-01-01
        • 2011-04-27
        • 1970-01-01
        • 2011-01-24
        • 2013-02-25
        相关资源
        最近更新 更多