2012-06-25 28 views
1

給定一個Delphi和Interbase客戶端 - 服務器應用程序,我想根據數據庫的用戶數來許可應用程序。這怎麼能用商業授權軟件來完成?我沒有看到任何這些列表功能,看起來像他們會覆蓋這一點。每個用戶最初登錄到數據庫。數據庫看起來非常有用,它可以向任何用戶或至少是管理員開放。我是否還必須編寫一個Delphi exe或dll在服務器上運行 - 可能是數據庫中的一個功能 - 連接到該服務器的許可證?不知道如何繼續。 順便說一句,Interbase授權同時使用的用戶,但我認爲他們直接寫入服務器,但我想要類似的東西。如何許可數據庫中的用戶數量?

回答

1

要控制同時進行的客戶端連接,您肯定需要服務器端應用程序。 它可以是一個簡單的tcp/ip套接字服務器作爲服務(linux守護進程)或另一個(midas?)服務器層。

當您的客戶端應用程序啓動時,它會調用一個服務器方法,例如Session.Connect,在此計算活動連接並在最大限制達到時返回false(無代碼)。 當應用程序關閉時,您使用Session.Disconnect通知服務器。減少連接數。

在客戶端應用程序和服務器服務(像我悲傷的套接字)之間保持一個實時(永久)連接來處理應用程序掛起,不受控制的重新啓動並處理此事件(例如服務器端的OnSockedDisconnect)以減少連接計數和處理斷開propery,例如寫在日誌等...

當然溝通應該加密(握手),以避免不必要的客人。 你也可以玩SIM卡閱讀器等。

這種方法不會提供工業(核)級別的安全性,但如果正確地編碼,甚至專家黑客可能需要一段時間才能打破它。或者,您可以查看一些現成的保護工具,如SafeNet(HASP保護)。

此外,Firebird(也可能是Interbase)具有數據庫連接/斷開觸發器,其中如果用戶具有權限,則可以讀取連接數。但是,如果DB存儲在客戶服務器上,這些可以輕鬆更改。

+0

您是否知道有任何商業授權軟件可以做到這一點,或者您必須通過開發自定義功能來創建此功能? –

+0

我知道一些使用硬件(hasp)保護的軟件公司。與套接字服務器的想法相對容易實現。 – Marcodor

相關問題