本地java桌面应用程序的登录架构

本地java桌面应用程序的登录架构,java,authentication,architecture,desktop-application,Java,Authentication,Architecture,Desktop Application,你好, 我正在尝试编写我的第一个具有登录功能的简单本地桌面应用程序。应该支持具有不同访问权限的不同类型的用户。我已经设法想出了一个简单版本的程序,但是,它感觉有几个层次的缺陷。我只是不知道整个应用程序的结构是否正确。我对安全也很不确定 以下是我当前的实现(仅限登录特定的类/方法): 问题: 有人对如何实施这种系统有什么建议吗?或者,是否有什么地方可以让我进一步了解如何以合理的方式构造应用程序?我已经学习了很多设计模式和OOB原则,但我很难将它们应用到实际应用中 NB: 如果上下文很重要,那么该

你好,
我正在尝试编写我的第一个具有登录功能的简单本地桌面应用程序。应该支持具有不同访问权限的不同类型的用户。我已经设法想出了一个简单版本的程序,但是,它感觉有几个层次的缺陷。我只是不知道整个应用程序的结构是否正确。我对安全也很不确定

以下是我当前的实现(仅限登录特定的类/方法)

问题:
有人对如何实施这种系统有什么建议吗?或者,是否有什么地方可以让我进一步了解如何以合理的方式构造应用程序?我已经学习了很多设计模式和OOB原则,但我很难将它们应用到实际应用中

NB:
如果上下文很重要,那么该应用程序是一个虚构的计算机存储,管理员可以通过它将不同类型的计算机组件添加到资源清册中。客户可以搜索和筛选这些部件,并创建自己的配置。然后,客户可以订购该配置。

密码功能有什么意义?如果它在某个用户控制的机器上运行,而不是在你的机器上运行,那么他们将拥有访问权限。你对此无能为力

一般来说,对于完全在本地运行的应用程序,要依靠操作系统本身;将数据存储在用户的home dir中,并确保文件的访问权限是其他(非管理员)用户无法读取的。其他管理员用户?嗯,他们是管理员用户。如果他们想读,他们可以,这就是这些用户的观点。你不能阻止他们这么做。如果您将每个用户的相关数据存储在只有他们才能读取的文件中,则根本不需要用户名/密码提示;他们的“登录”是他们的本地用户名,他们的“身份验证”是固有的。简单

如果应用程序是由管理员启动的,并且是在锁定模式下启动的,那么用户/通行证设置可能有意义,在这种情况下,操作键盘和鼠标的人无法访问系统,根本无法关闭应用程序。例如,ATM机就是这样工作的:那些只是windows机器,“键盘”只是一个小键盘,鼠标和计算机系统本身被锁在一堆砖块和金属中。如果您这样做,请确保您使用了正确的密码;不要存储它,而是存储它的bcrypt/pbkdf/argon2/scrypt散列。这样一来,如果有人获取了该文件,你的应用程序就会受到攻击,但至少如果该用户在其他网站上重复使用了他们的密码(用户确实这样做),黑客也不会暴露这一点


我假设您没有,这让我们回到:您试图用密码实现什么?

我将使用Spring(带Hibernate)作为后端,Prime、Thymeleaf和React作为前端。哦,我更喜欢在类图之前制作ER图。我已经了解到,大多数情况下,你需要的ER比类图更多(在快速项目中)。希望能有所帮助。另外,我会使用一个类似MVC的架构,带有服务和门面(就像您所做的那样)。你觉得怎么样?谢谢你的回复。我将了解什么是MVC体系结构。我并不是真的想使用框架(或其他人编写的代码)。该应用程序只是一个简单的程序,一次只在一台计算机上运行一个用户,这意味着后端和前端之间的界限很模糊,因为实际上没有服务器在运行。目的只是为了学习如何创建一个简单的应用程序。阅读下面答案中的注释,我认为使用Java和swing库或python就足够了。甚至你也可以使用JavaScript(但使用MVC)来实现,我知道你可以绕过密码/用户名。然而,这不是一个真正的项目。我假设您所能做的就是使用应用程序的GUI,而不是峰值到任何文件。这是作业的一部分,所以我不制定规则:/