在我的應用程序中,應該有兩種登錄方式:通過用戶/密碼手動或自動從操作系統(連接到活動目錄服務器)檢索憑據。使用可選憑據來定義用戶驗證界面
爲了是柔性的,我已創建一個新的接口:
interface SignOnProcessor {
boolean verifyLogin(SignOnCredentials _credentials)
}
其中SignOnCredentials
是沒有任何方法的接口。
之後,我創建了兩個實現SignOnProcessor
:PasswordSignOnProcessor
和SingleSignOnProcessor
。兩者都在其verifyLogin()
方法中實現不同的邏輯。
的PasswordSignOnProcessor
需要用戶名和密碼,因此PasswordSignOnCredentials
是這樣實現的:
class PasswordSignOnCredentials implements SignOnCredentials {
String getUserName();
String getPassword();
}
的SingleSignOnProcessor
,在另一方面,不需要任何憑證。它只會向操作系統詢問必要的信息。所以我目前正在傳遞一個空實現SignOnCredentials
的:
class SingleSignOnCredentials implements SignOnCredentials {
// Nothing here, credentials are retrieved from OS
}
沒有在verifyLogin()
方法與SingleSignOnCredentials
完成。
我有這樣的感覺,必須有更好的方法。我不應該創建並傳遞一個對象到verifyLogin()
然後不使用它。 我能想到的另一個解決方案是創建一個沒有任何參數的接口方法verifyLogin()
。這也感覺不對。
這種情況下的首選解決方案是什麼?應該有一些很好的,乾淨的方式來做到這一點,但目前我被卡住了。任何幫助表示讚賞!