我想用Eclipse Scout實現數據庫認證。Eclipse Scout - 乾淨的數據庫認證
爲此,我在客戶端模塊中創建了一個類DataSourceCredentialVerifier
,該模塊實現了ICredentialVerifier
接口。然後我改編UiServletFilter
類的init
方法來使用我的驗證器。
public class DataSourceCredentialVerifier implements ICredentialVerifier {
private static final Logger LOG = LoggerFactory.getLogger(DataSourceCredentialVerifier.class);
@Override
public int verify(String username, char[] password) throws IOException {
Object queryResult[][] = BEANS.get(IMySqlAuthService.class).load();
return AUTH_OK;
}
我還沒有實現任何驗證邏輯。我現在的任務是建立一個乾淨的數據庫連接。
對於我創造了以下interface
共享模塊:
public interface IMySqlAuthService extends IService {
Object[][] load();
}
的實施是服務器模塊:
public class MySqlAuthService implements IMySqlAuthService {
@Override
public Object[][] load() {
String sql = "select username, password from users ";
Object[][] queryResult = SQL.select(sql, null, null);
return queryResult;
}
}
首先,我想看看,如果有至少是查詢中的某些內容,但我在此處得到AssertionException:
Object queryResult[][] = BEANS.get(IMySqlAuthService.class).load();
org.eclipse.scout.rt.platform.util.Assertions$AssertionException: Assertion error: no instance found for query: interface org.eclipse.scout.app.shared.services.IMySqlAuthService
at org.eclipse.scout.rt.platform.util.Assertions.fail(Assertions.java:580)
at org.eclipse.scout.rt.platform.util.Assertions.assertNotNull(Assertions.java:87)
at org.eclipse.scout.rt.platform.BEANS.get(BEANS.java:41)
我沒有得到我的MySqlAuthService
實現的實例。我認爲BeanManager
應該爲我創建了一個實例。 MySqlAuthService
應該註冊爲Bean,因爲我的IMySqlAuthService
接口從IService
延伸,其中有@ApplicationScoped
註釋。
將@Bean
註釋添加到MySqlAuthService
導致相同的例外。
這裏對BeanManager
和註釋的一些信息: https://eclipsescout.github.io/6.0/technical-guide.html#sec-bean.manager
這裏是另一種不同的方法S.O.嘗試,但它不正確: https://www.eclipse.org/forums/index.php/t/1079741/
我怎樣才能讓我的例子與我的服務一起工作?