首页 > 解决方案 > Scala securesocial:电子邮件注册用户的providerId?

问题描述

securesocialhttps://github.com/jaliss/securesocial)中,您必须覆盖

def findByEmailAndProvider(email: String, providerId: String): Future[Option[BasicProfile]]

类的方法UserServicehttps://github.com/jaliss/securesocial/blob/master/module-code/app/securesocial/core/services/UserService.scala

但是providerId通过简单的电子邮件注册(不使用社交帐户)注册的用户是什么?

我没有发现providerId文档或代码本身的内容的描述。我的理解是,它providerId是一个类似“twitter”、“facebook”或“google”的字符串,用于标识用户用来连接的社交网络。

我应该为电子邮件注册用户使用代表我的 Web 应用程序(“myapp”或类似的东西)的任意字符串吗?

实际上,我想我什至不明白为什么providerId是这个方法的参数。我看不出它在这种情况下的用途。如果用户使用电子邮件地址进行连接,是否已经知道他们没有通过 facebook/twitter/google 或其他方式进行连接?

谢谢你的帮助。

标签: scalaplayframeworksecuresocial

解决方案


我们使用 [userpass] 作为用户注册电子邮件的 providerId。根据我的理解,此方法将 providerId 作为参数,因为单个电子邮件可以有多个条目(即,用于不同的社交帐户和电子邮件注册)。当用户尝试通过某种方法(社交或电子邮件)登录时,您需要一种方法来区分数据库中的记录。例如,用户通过电子邮件注册并尝试通过 facebook 登录,那么这将帮助您识别该用户的 facebook 信息不存在,他首先需要连接他的 facebook 帐户。


推荐阅读