我会保持简短。
有人可以指出我正确的方向:
如何在用Python编写的本机应用程序中验证用户?
我在网上知道有sessions
,但是我想不出一种实现身份验证的方法,这种方式会“生存”一段时间,到期后我可以退出用户吗?
修改
我指的是桌面类型的应用程序,我对Twisted中基于Web的开发实现非常满意
编辑2 我正在考虑的应用程序不会对服务器进行身份验证,而是一个独立的应用程序,例如,这个想法是收银机/销售点(我的想法有点不同,但部分功能是相同的),我需要验证收银员,所以我可以记录他/她处理的交易,打印收据上的姓名等等。所有这些都将基于一台机器,没有服务器通信或任何东西
答案 0 :(得分:1)
由于某些原因,您似乎非常困惑并注意“会话”,可能是因为您的背景是在网络应用中?
任何你不需要“会话”的人,因为使用桌面应用程序,你可以毫不费力地告诉谁在使用软件而不需要一些精心设计的工具。您不需要服务器,您不需要身份验证工具,您不需要任何东西 - 只需将该用户存储在您的单个应用程序中。这一切都是 - 你的应用程序中的一个名为“user”的变量,也许是启动时的一些接口从可用用户中选择一个。 如果您需要它在靴子之间持续,只需将其保存在文件中并从中读取。
答案 1 :(得分:1)
您所期望的安全性并不完全清楚。
一般情况下,如果最终用户可以物理访问机器和螺丝刀,那么你就可以搞砸了 - 他们可以在那台机器上做任何他们想做的事情。
如果您将硬件安全性作为给定,但希望确保软件安全性,那么您将不得不在机器的边界内进行服务器通信。您必须将服务器和客户端分开,并在用户无法访问的安全上下文中运行服务器。然后,服务器将执行身份验证和任何需要身份验证的操作(打印出收据等)。例如,在类Unix操作系统下,您可以在专用系统用户或root
下运行守护程序;在Windows上,您将拥有一个运行为LOCAL SERVICE
的系统服务或任何被调用的服务。通过这种方式,操作系统的内置安全功能将确保(给予适当的维护,如及时应用安全修补程序),用户不能影响执行敏感操作的软件的行为。客户端和服务器之间的协议可以是任何东西,您可以像在HTTP中一样进行身份验证 - 实际上,您甚至可以使用HTTP本身。
最后,如果您确定您的用户根本不会篡改您的系统,例如。因为他们缺乏技术技能,或者被闭路电视摄像机监视 - 你可以忘掉所有这些东西,并与Puciek的答案一致。
答案 2 :(得分:1)
如果您使用的是Unix,请依赖它是一个多用户系统。也就是说,用户已经使用自己的凭据登录,因此您无需执行任何操作,只需使用其主目录存储数据,注意阻止其他用户使用权限访问它。您可以改进此功能以提供加密。对于全局应用程序数据,您可以指定“manager”用户或组,以及应用程序可以写入的自己的目录。
在Windows系统上也可以实现所有这些。