- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在看剧本! 2.1 示例按照 ZenTasks 示例设置基本登录系统。我被卡住的地方是 JavaForms 部分。我想使用通过 Guice DI 提供的身份验证服务实例来验证登录请求。
我正在关注 Play20 Sample .此示例使用静态 authenticate()
方法在表单提交后请求表单验证时运行身份验证。关于如何在非静态范围内执行此验证步骤的任何想法?
注意:我看过Play! Authenticate 插件和 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;
}
}
这是一个不错的解决方法,但它仍然依赖于静态注入(inject):(
最佳答案
Play Framework 不提供开箱即用的 Dependency Injection
。但是,您可以将它与 Guice 或 Spring 集成。作为一个懒惰的开发人员,您还可以为该服务创建一个 Singleton
,或者将其作为一个插件(因为它可能无论如何都需要为应用程序启动做准备)。然后您可以获得对您的插件的引用 -- Play.application().plugin(AuthPlugin.class)
。
在这种特殊情况下,您可以在验证方法中进行数据库查找,例如
User u = User.find.where().eq("username", username).eq("password`,password).findUnique();
if (u == null)
return "Error.";
else
return null;
所以这并不是关于 Play Framework,而是关于一般的 Java 编程。
关于java - 玩! 2.1-RC2 没有静态引用的 JavaForms validate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14472223/
我知道“如何从字符串转换为字符?”已被问过很多次,但我不知道为什么这对我的项目来说是一个问题,因为我不认为我正在尝试从字符转换为字符串。 这是我的代码: private void BtnAddClie
所以,我想知道如何在我的 JavaForm 中实现世界上所有国家/地区的列表。 由于我不想坐下来写出世界上所有的国家/地区,因此我想实现一个外部列表,但我找不到任何地方可以真正找到如何实现下拉列表像这
我正在尝试在 Play 框架中实现 Java 表单。我正在按照文档中的方式执行所有操作,但出现错误。 https://www.playframework.com/documentation/2.5.x
我一直在看剧本! 2.1 示例按照 ZenTasks 示例设置基本登录系统。我被卡住的地方是 JavaForms 部分。我想使用通过 Guice DI 提供的身份验证服务实例来验证登录请求。 我正在关
我是一名优秀的程序员,十分优秀!