我一直在玩游戏!2.1 示例按照 ZenTasks 示例设置基本登录系统。我卡住的地方是 JavaForms 部分。我想使用通过 Guice DI 提供的身份验证服务的实例来验证登录请求。
我正在关注Play20 Sample。authenticate()
此示例在表单提交后请求表单验证时使用静态方法运行身份验证。关于如何在非静态范围内执行此验证步骤的任何想法?
注意:我看过Play!验证插件以及 SecureSocial 插件,但是这些项目对于我现在想做的事情来说太过分了。此外,我对允许在 JavaForms 中进行非静态验证的通用解决方案感兴趣。
编辑: 我在这里要求的内容似乎有些混乱。我希望找到的是另一种方法来执行由 Play 发送的表单提交的验证步骤!框架 Form.form() 生成的表单。目前,它要求在不是通过 DI 框架创建的 POJO 实例上调用 validate() 方法。这导致访问授权服务等需要静态引用...
编辑 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;
}
}
这是一个不错的解决方法,但它仍然依赖于静态注入:(