2

我正在为一家小商店设计一个销售点系统。该店只有一个销售点,但通常他们是店内的一到三个用户(卖家)。每个用户在系统中都有自己的用户帐户,所以他们经常登录和注销。我应该如何设计登录/注销系统?如何在销售点系统中平滑切换用户?

目前用户不使用密码,因为每次登录时输入密码需要很长时间。

该平台是Windows Vista,但我也想支持Windows 7。我们在网络上使用Active Directory。该系统目前在Java/Swing中开发,但我正在考虑更改为C#.NET/WPF。

我在想SmartCard解决方案,但我不知道这是否适合我的情况。它会更安全(我喜欢),但我不知道它是否易于实施并且易于使用,即我可以让POS系统在后台运行还是在用户切换时以非常快的速度启动?智能卡解决方案非常昂贵吗? (我的客户是小商店)在智能卡解决方案中是否首选使用.NET或Java?

除密码/无密码/智能卡外,还有其他哪些解决方案?

  • 我该如何设计登录/注销系统?
  • 使用智能卡有什么好的解决方案?
  • 我想为C#.NET/WPF和Java/Swing平台提供解决方案。
  • 我希望针对Active Directory解决方案和仅在Windows中使用一个用户配置文件的解决方案提供解决方案。

这个问题在类似产品中如何解决?我只看到密码解决方案,但它们很笨拙。

+0

我没有足够的知识来深入解答这个问题,但是如今智能卡阅读器(连接到USB)非常便宜(想想30-40美元)。他们中的很多人也为通常的(流行目标:C(++),Java,.Net等)提供库 – ChristopheD 2010-03-24 19:53:27

回答

1

一个有趣的解决方案是使用“快速用户切换”,即在同一台PC上打开多个用户会话的功能。 POS软件可以通过每个卖家帐户的Startup文件夹启动,并且可以在每个卖家会话中保持活动状态。

我认为在一个域(即使用活动目录)禁用快速用户切换,但根据The old new thing,这只适用于XP。我只是在工作时检查了我的Win7机器:它在一个域中,但仍然有“切换用户”菜单项。

主要优点是,如果您的软件已经是多用户意识的,您不需要改变它。

在写下面的代码之前,我应该先进行快速用户切换检查,因为这似乎是最简单的解决方案。无论如何,这里有其他想法。

另一个解决方案是您提到拥有一个Windows用户,但您的应用程序管理的多个“虚拟用户”。智能卡是实现伪登录的好方法。在C++中,API允许检测卡的移除或插入,因此应用程序可以检测到并在插入后读取卡,以知道当前谁在计算机前。 .NET可以通过P/Invoke轻松调用这个API;我不太了解Java,只是如果没有发布此功能的托管库,JNI可能是调用本机API的解决方案。 应该做的是研究不同类型的卡片以及如何与他们交谈,因为您的应用程序应该使用不需要访问PIN码的卡片(或者您回到慢速登录系统,除非搭售4位数字不被认为太慢)。

我见过餐馆的服务员在收银台插入一把钥匙以便识别。我搜索了“收银机”,但只能找到一个完整的解决方案包,而不是像关键读者那样的组件。

一个几乎愚蠢的问题是:你需要多少安全性?在应用程序的第一个屏幕上有大按钮是否有意义,人们点击这些按钮是为了告诉系统他们是谁?完成后,他们点击“完成”按钮,应用程序返回到“识别”屏幕。我已经把它放在最后,因为它非常简单,所以它很少有用。

+0

感谢您的回答!它的确如此,我并不需要这种安全性,但是由于POS正在处理大量金钱,所以我想出于审计原因考虑它。如果我无法以平稳的方式安全地更改用户,那么我将只为每个用户提供按钮。 – Jonas 2010-04-07 21:26:49

0

我并不熟悉各种各样的智能卡提供商解决方案,但我知道Gemalto有一个.Net友好的设置。大多数其他人都面向Java,但支持正在扩大。

关于切换用户会话和您的应用程序,这取决于您的应用程序是多么“沉重”。如果您的应用程序需要相当多的启动时间/资源,那么您可以考虑将基本应用程序作为服务在服务器上创建,该服务可以在后台持续运行,然后您可以加载轻量级UI以与服务交互与每个用户会话(可能通过启动菜单启动)。

有一个C# project on CodeProject它提供了一个与Windows中的智能卡服务交互的框架 - 可能是有趣的阅读。

-1

也许你想考虑使用条形码扫描仪......可能你已经有POS设备......我的酒吧和餐厅的软件使用条形码扫描仪来识别用户。你有两种选择:第一,用户必须使用自己的条形码卡登录,然后他才能使用该应用程序......第二个更好,每个人都可以使用应用程序,但打印收据的用户必须使用条形码卡。之后他对这张收据负责。

+0

请详细说明您的解决方案并尽可能提供资源。 – JSuar 2012-12-19 16:50:10

0

我曾经有机会在过去的一个项目中与Open Source Computer Vision library (OpenCV) 一起工作,它的“人脸识别”就是您所追求的。它使用本机代码编写,但可以轻松与Java,.NET,Android,iOS一起使用。所有你需要的是一个网络摄像头和一个按钮“切换用户”与onClickListener,将拍照并与雇员的图像进行比较。优点?一旦拍摄完成,它将在不到10ms的时间内完成处理。正如Timores早些时候提到的那样,一旦脸部被识别出来,您只需切换会话即可。简单而有效的解决方案祝你好运!