Play框架应用程序身份验证和用户管理

12

在Scala的Play 2中,按照Book App示例,我现在有一个基本的工作应用程序。

现在我想要添加一些功能,例如:

  • 用户注册

  • 用户身份验证以访问某些页面

在Scala的Play中最好的方法是什么?我应该自己管理吗?还是有插件可以用来实现这些功能?

3个回答

10

注意: 我是 Silhouette 的维护者。

我建议您使用 Silhouette,它是 Secure Social 的核心版本,旨在构建一个更具可定制性、非阻塞和经过充分测试的实现。

对于第一个稳定版本,只有两个必须解决的问题。而这些问题只是未来的请求。没有计划进行 API 更改。需要改进文档,并且已经开始编写一个示例应用程序。单元测试也是一个很好的起点。

如果您计划按照 Secure Social 所述的身份验证流程进行操作,则应坚持使用此方式。这种方式已经存在超过两年,由许多公司进行了充分测试。否则,请考虑使用 Silhouette。


1
你是否有与SecureSocial注册相同的流程? - tabdulradi
2
Silhouette没有自己的身份验证流程。可以将其视为没有GUI界面的Secure Social。 - akkie
那个示例应用程序的链接已经失效。 - j will
@jwill Cloudbees在免费账户中会将应用程序休眠。如果您稍等一会儿,应用程序就会唤醒,然后您就可以进行测试了。 - akkie
Silhouette提供Java API吗? - robguinness
@robguinness Silhouette目前不支持Java API,也没有计划支持。 - akkie

3
您有两个选择:
  1. Secure Social (http://securesocial.ws/)
    但是它的注册流程比较特殊,用户需要先输入电子邮件地址,然后接收到注册表单链接。 不过,有一个拉取请求解决了这个问题 (https://github.com/jaliss/securesocial/pull/260)。

  2. Play Authenticate
    它不支持 Scala。但是我在这里创建了一个解决方法:https://github.com/joscha/play-authenticate/issues/92

它们都需要您编写与数据库交互的接口层。它们的一个重要缺点是,您将无法使用响应式数据库驱动程序(如 Reactive Mongo)。它们假定您会立即返回结果,而不是 Future 的结果。


感谢Radian的建议。我看到了很多关于Securesocial的答案。我会尝试一下,看看是否可以用于我的应用程序。 - Lahniep
Play-authenticate似乎不直接支持Scala项目,而Secure Social尚不支持Play 2.4.x:https://github.com/jaliss/securesocial/issues/556 - nietaki

2

有一个名为securesocial的插件(http://securesocial.ws),涵盖了大多数常见的身份验证方法,并具有注册功能。我发现它非常有用。

缺点是文档不够完善。如果您想做一些比最简单的场景略微复杂的事情,请准备好阅读源代码。


+Mike,感谢您提到securesocial。您知道有没有使用它的公共应用程序示例吗? - Lahniep
@Lahniep 你需要源代码吗?你可以看一下我的简单待办事项应用程序 https://github.com/mikegirkin/papersheet - Mike G.
我会尝试一下,看看能否在基本应用程序中使用它。 - Lahniep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接