如何在销售点系统中平滑切换用户?
我正在为一家小商店设计一个销售点系统。商店只有一个销售点,但商店中通常只有一到三个用户(卖家)。每个用户在系统中都有自己的用户帐户,因此他们经常登录和注销。我应该如何设计好登录/注销系统?
目前用户不使用密码,因为每次登录时输入密码需要很长时间。
平台是Windows Vista,但我也想支持Windows 7。我们在网络上使用 Active Directory。该系统目前是用Java/Swing开发的,但我正在考虑改为C#.NET/WPF。
我正在考虑智能卡解决方案,但我不知道这是否适合我的情况。它会更安全(我喜欢),但我不知道它是否易于实施且易于使用,即我是否可以让 POS 系统在后台运行或在用户切换时快速启动?智能卡解决方案非常昂贵吗? (我的客户是小商店)在智能卡解决方案中首选使用 .NET 还是 Java?
除了密码/无密码/智能卡之外,我还有哪些其他解决方案?
- 我应该如何设计好登录/注销系统?
- 使用智能卡有什么好的解决方案吗?
- 我想要针对 C#.NET/WPF 和 Java/Swing 平台的建议解决方案。
- 我想要针对 Active Directory 解决方案和仅在 Windows 中使用一个用户配置文件的解决方案提供建议的解决方案。
同类产品中这个问题是如何解决的?我只见过密码解决方案,但它们很笨拙。
I am designing a Point-Of-Sale system for a small shop. The shop just have one Point-Of-Sale but often they are one to three users (sellers) in the shop. Each user have their own user account in the system so they login and logout very often. How should I design the login/logout system in a good way?
For the moment the users don't use passwords, because it takes so long time to type the password each time they login.
The Platform is Windows Vista but I would like to support Windows 7 too. We use Active Directory on the Network. The system is developed in Java/Swing for the moment, but I'm thinking about to change to C#.NET/WPF.
I am thinking about an SmartCard solution, but I don't know if that fits my situation. It would be more secure (which I like) but I don't know if it will be easy to implement and smooth to use, i.e. can I have the POS-system running in the background or started very quickly when the users switch? Are SmartCard solutions very expensive? (My customers are small shops) Is it preferred to use .NET or Java in a SmartCard solution?
What other solutions do I have other than passwords/no passwords/smartcards?
- How should I design the login/logout system in a good way?
- Is there any good solution using SmartCards for this purpose?
- I would like suggested solutions both for C#.NET/WPF and Java/Swing platforms.
- I would like suggested solutions both for Active Directory solutions and solutions that only use one user profile in Windows.
How is this problem solved in similar products? I have only seen password-solutions, but they are clumsy.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
一个有趣的解决方案是使用“快速用户切换”,即在同一台 PC 上打开多个用户会话的功能。 POS 软件可以通过每个卖家帐户的启动文件夹启动,并在每个卖家会话中保持活动状态。
我认为在域中(即使用 Active Directory)会禁用快速用户切换,但根据 旧的新事物,这仅适用于 XP。我刚刚在工作中检查了我的 Win7 机器:它在域中,但仍然有“切换用户”菜单项。
主要优点是,如果您的软件已经支持多用户,则无需更改它。
我应该在编写下面的内容之前进行快速用户切换检查,因为这似乎是最简单的解决方案。无论如何,这里还有其他想法。
另一个解决方案是您提到的拥有一个 Windows 用户,但您的应用程序管理多个“虚拟用户”。智能卡是实现伪登录的好方法。在 C++ 中,API 允许检测卡的移除或插入,因此应用程序可以检测到这一点并在插入后读取卡以了解当前谁在计算机前面。 .NET可以通过P/Invoke轻松调用这个API;我对 Java 了解不多,但如果没有托管库发布此功能,JNI 可能是调用本机 API 的解决方案。
应该做的是研究不同类型的卡以及如何与它们对话,因为您的应用程序应该使用不需要 PIN 码才能访问的卡(或者您会回到缓慢的登录系统,除非绑定 4 -位数不被认为太慢)。
我见过餐馆的服务员将钥匙插入收银机以便识别。我用谷歌搜索“收银机”,但只能找到完整的解决方案包,而不是像钥匙读取器这样的组件。
一个近乎愚蠢的问题是:您需要多少安全性?在应用程序的第一个屏幕上设置大按钮是否有意义,人们可以单击这些按钮来告诉系统他们是谁?完成后,他们单击“完成”按钮,应用程序将返回“识别”屏幕。我把它放在最后是因为它太简单了,有用的可能性很低。
An interesting solution is to use "Fast User Switching", i.e. the capability to have multiple user sessions open on the same PC. The POS software could be launched through the Startup folder of each seller account and would stay active in each seller session.
I thought that being in a domain (i.e. using Active Directory) disables Fast User Switching, but according to The old new thing, this was true on XP only. I just checked with my Win7 machine at work: it is in a domain but still has the "switch user" menu item.
The main advantage is that if your software is already multi-user aware, you don't need to change it.
I should have made the Fast User Switching check before writing what is below, because this seems to be the simplest solution. Here are other ideas, anyway.
Another solution is what you mention of having a single Windows user but several "virtual users" that your application manages. A smart card is a good way to implement a pseudo-login. In C++, the API allows detecting the removal or insertion of a card, so the application could detect this and read the card after insertion to know who's currently in front of the computer. .NET can easily call this API through P/Invoke; I don't know much of Java, except that JNI could be a solution to call the native API if there is no managed library that publishes this capability.
What should be done is researching the different types of card and how to talk to them, as your app should use a card that does not require a PIN to be accessed (or you are back to the slow login system, except if tying a 4-digit number is not considered too slow).
I've seen restaurants where waiters insert a key into the cash register in order to be identified. I googled "cash registers" but could only find a complete solution package, rather than the components like a key reader.
An almost idiotic question is: how much security do you need ? Does it make sense to have big buttons on the first screen of the app, where people click in order to tell the system who they are ? When they are done, they click on a "Finish" button and the app goes back to the "identify" screen. I've put this at the end because it is so simplistic that it has a low probability of being useful.
我不熟悉各种智能卡提供商解决方案,但我知道金雅拓< /a> 有一个 .Net 友好的设置。大多数其他都是针对 Java 的,但支持范围正在扩大。
关于切换用户会话和您的应用程序,这取决于您的应用程序的“重量”。如果您的应用程序需要相当多的启动时间/资源,那么您可能会考虑将基本应用程序创建为计算机上的服务,该应用程序可以在后台连续运行,然后您可以加载轻量级 UI 来与服务交互每个用户会话(可能通过启动菜单启动)。
CodeProject 上有一个 C# 项目,它提供了与智能卡交互的框架windows 中的服务 - 可能会很有趣。
I'm not familiar with a broad range of smart card provider solutions, but I know Gemalto has a .Net friendly setup. Most others are geared to Java, but support is widening.
With regards to switching user sessions and your application, it depends on how "heavy" your application is. If your app requires quite a bit of start-up time / resources then you might consider creating the basic application as a service on the machine which can run in the background continuously and then you can load a light-weight UI to interact with the service with each user session (maybe launch via Startup menu).
There is a C# project on CodeProject which provides a framework for interacting with smart card services in windows - might be interesting reading.
我有机会使用开源计算机视觉库 (OpenCV)
在我过去的一个项目中,它的“面部识别”就是你所追求的。它是使用本机代码编写的,但可以轻松地与 Java、.NET、Android、iOS 一起使用。您所需要的只是一个网络摄像头和一个带有 onClickListener 的“切换用户”按钮,该按钮将拍摄照片并将其与员工的图像进行比较。优势?照片拍摄完成后,不到 10 毫秒即可得到处理。正如 Timores 之前提到的,一旦识别出人脸,您只需切换会话即可。简单而有效的解决方案。祝你好运!
I had a chance to work with the Open Source Computer Vision library (OpenCV)
in one of my past projects and its "Face-Recognition" is what you're after. It is written using native code, but can be easily used with Java, .NET, Android, iOS. All you need is a webcam and a button "Switch User" with the onClickListener that will take a picture and compare it with the images of your employees. Advantage? Once the picture's taken, it gets processed in less than 10ms. And as Timores mentioned earlier, once the face is recognised, you simply switch the session. Simple yet effective solution. Good luck!
也许您想考虑使用条形码扫描仪...也许您已经在 POS 上安装了此设备...我的酒吧和餐馆软件使用条形码扫描仪来识别用户。您有两种使用选择:第一,用户必须使用自己的条码卡登录,然后他可以使用该应用程序...第二个更好,每个人都可以使用应用程序,但要打印收据用户必须使用条码卡。此后,他负责支付该收据上的金额。
maybe you want to think about using barcode scanner... probably you already have this device on POS ... my software for bars and restaurants use barcode scanner to recognize users. You have 2 options for using: first, user must log in with own barcode card, then he can use the application ... the second is better, everyone can use application, but to print the receipt user must use barcode card. After then he is responsible for that amount on this receipt.