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早些時候提到的那樣,一旦臉部被識別出來,您只需切換會話即可。簡單而有效的解決方案祝你好運!