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 游戏服务无法进行身份验证

Unity Play 游戏无法进行身份验证

通过 Firebase 身份验证使用 Google Play 游戏

Play 框架 2.4 的 HTTP 基本身份验证

使用 Google Play 游戏进行 Firebase 身份验证

在 Play 商店中发布后,Google 身份验证不起作用