Play 2.3.x 中的身份验证
Posted
技术标签:
【中文标题】Play 2.3.x 中的身份验证【英文标题】:Authentication in Play 2.3.x 【发布时间】:2014-07-31 04:42:54 【问题描述】:我正在使用 Play!框架 v2.3 (Java),我想为我的网络应用程序添加一些用户身份验证,即每个用户的用户名/密码和注册过程。
我在文档中找到了一些关于如何为 v2.1 和 v2.2 执行此操作的信息: http://www.playframework.com/documentation/2.1.0/JavaGuide4 https://www.playframework.com/documentation/2.2.x/JavaGuide4
但我在 v2.3 上找不到任何更新信息。我已经尝试查看 play.mvc.Security.Authenticated 的 API,但没有帮助 (http://www.playframework.com/documentation/2.3.x/api/java/play/mvc/Security.Authenticated.html)。
有人知道如何正确执行此操作吗?
【问题讨论】:
【参考方案1】:Play authenticate 不仅适用于 scala,也适用于 java,它嵌入了死锁......社会安全,无状态,有很多例子:
https://github.com/joscha/play-authenticate
这是最好的可定制身份验证模块
【讨论】:
【参考方案2】:还有另一个名为 Silhouette 的强大身份验证库,用于 Play Framework 应用程序 (Scala),它支持多种身份验证方法,包括 OAuth1、OAuth2、OpenID、凭据、基本身份验证、双因素身份验证或自定义身份验证计划。 http://silhouette.mohiva.com
它维护得很好,几天前刚刚发布了稳定版 3.0.0:http://silhouette.mohiva.com/blog/stable-release-of-silhouette-300
很酷的是,该项目以《守望者》漫画小说和电影中虚构的犯罪斗士角色剪影命名。
【讨论】:
可以在此处找到带有 angularJS 的 play 2.4 的演示种子模板:github.com/mohiva/play-silhouette-angular-seed【参考方案3】:我找到了这个 Play 模板,其中包括登录、重置密码等...
https://typesafe.com/activator/template/PlayStartApp
【讨论】:
【参考方案4】:已经存在许多涵盖许多用例的身份验证库。最好使用在社区中已经很成熟的东西。
Secure Social - 这似乎是最受欢迎的,有很多文档。 (适用于 java 和 scala)
Deadbolt 2 - 该 git repo 链接了许多实现示例。它似乎更适合 java。
Play2 Auth - 这仅适用于 scala,但它有据可查且非常灵活。 (我个人使用 Play2 Auth)
【讨论】:
在我的公司,我们使用 Secure Social 已有一年多了。现在我们刚刚升级到玩2.3。 2.3 的securesocial 官方版本尚未发布,但我们已经使用了一个候选版本。到目前为止,它看起来稳定且运行良好。我真的可以推荐 SecureSocial,但不得不说我从来没有真正整合过其他的。 有没有人有关于在 play 2.3.8 中完成的现有项目上安装 Secure Social 的分步说明?【参考方案5】:我们公司发布了一个开源云平台即服务 Web UI(适用于 Play Framework 2.2.2)。
我们计划在接下来的几周内将其迁移到 2.3.X,尽管一开始我们需要查看一些不兼容的问题。
您可以在http://www.acentera.com/opensource/ 观看我们工作的短视频;从那里您将能够找到我们的公共 Git 代码存储库,在某些情况下需要改进,但希望可以成为您使用这个出色的 Web 框架的良好开端。
我们使用 shiro 作为身份验证,使用自定义“SampleRealm”进行 JDBC 身份验证并获得适当的“权限”,使用 memcache 作为会话存储以保持无状态连接。
问候, 埃里克·M。 ACenterA Inc.
【讨论】:
视图和控制器尚未签入。谢谢。 它实际上不是一个“正常播放应用程序”。从某种意义上说,它使用的是 EmberJS 框架。视图位于车把模板 URL : Handlebars Views 内,所有数据都通过 JSON API 调用发送。 另外,你可以在下面看到 Project Controller 它使用: if (SecurityController.canViewUser(projectId, userId)) 不是最好的方法,但它可以举个例子。以上是关于Play 2.3.x 中的身份验证的主要内容,如果未能解决你的问题,请参考以下文章
Unity 中的 Google Play 游戏服务无法进行身份验证
通过 Firebase 身份验证使用 Google Play 游戏