我一直在玩Play! 2.1 ZenTasks示例之後設置基本登錄系統的示例。我陷入困境的是JavaForms部分。我想使用通過Guice DI提供的身份驗證服務實例來驗證登錄請求。玩! 2.1-RC2沒有靜態引用的JavaForms validate()
我跟着Play20 Sample。本示例使用靜態authenticate()
方法在表單提交後請求表單驗證時運行驗證。有關如何在非靜態範圍內執行此驗證步驟的任何想法?
注意:我看過Play!驗證插件以及SecureSocial插件,但是這些項目對於我現在想要執行的操作來說是過度的。另外,我對允許在JavaForms中進行非靜態驗證的通用解決方案感興趣。
編輯: 看來我對這裏要求的東西有些疑惑。我希望找到的是執行由Play發送的表單提交的驗證步驟的替代方法!框架Form.form()生成的表單。目前,它需要在POJO的實例上調用validate()方法,該實例不是通過DI框架創建的。這導致靜態引用訪問授權服務等被要求......
編輯2: 目前的解決方案,我用的工作是這樣的:
public static class AuthServiceFormReference {
@Inject
public static Provider<AuthService> authService;
}
// In my auth module configure()
//...
requestStaticInjection(AuthController.AuthServiceFormReference.class);
//...
public static class Login {
@Required
public String email;
@Required
public String password;
public String validate(){
if(AuthServiceFormReference.authService.get().authenticateAdmin(email, password) == null) {
return "Invalid user or password";
}
return null;
}
}
這是一個不錯的解決辦法,但它仍然依靠靜態注射:(
這與Play中給出的例子非常相似!我鏈接到的框架登錄示例。我不喜歡這個主要原因是因爲它需要靜態注入。我希望找到一個解決方案,使我能夠在非靜態範圍內執行JavaForm validate()功能。 – torbinsky