- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Play ! 2.0.4 和 SecureSocial 2 ( http://securesocial.ws/ )。斯卡拉实现。这个问题的大部分将直接引用此处的示例:https://github.com/jaliss/securesocial/blob/2.0.12/samples/scala/demo/app/service/InMemoryUserService.scala
我想弄清楚作者与存储服务进行后端交互的初衷。关于 def find(id: UserId)
和 def findByEmailAndProvider(email: String, providerId: String):
方法,SecureSocial 是否希望提供 Facebook ID或可用于返回完整 SocialUser
类的电子邮件?
如果是这样,那么我们如何为每个用户分配我们自己的 ID,以便我们可以将帐户链接在一起?因为似乎如果我扩展 Identity 以包含通用 ID,那么是否也需要重写/扩展社交提供者?
至少,我试图弄清楚我应该为后端服务中的 find
和 save
方法公开哪些 API/参数。让我知道这个问题是否需要澄清:)
最佳答案
在花了几天时间进行一些设计考虑并更好地理解 SecureSocial 之后,我意识到实现 find
和 save
方法并不难理解。在重要的后端服务中正确设计逻辑。
基本上,我创建了一个 PlatformUser
类,它扩展了 Identity
类并包含从后端类中提取的用户 ID 和配置文件数据。这是它的样子:
case class PlatformUser(
guid: String,
suspended: Boolean,
id: UserId,
firstName: String,
lastName: String,
fullName: String,
email: Option[String],
avatarUrl: Option[String],
authMethod: AuthenticationMethod,
oAuth1Info: Option[OAuth1Info] = None,
oAuth2Info: Option[OAuth2Info] = None,
passwordInfo: Option[PasswordInfo] = None,
communityProfile: Option[String] = None
) extends Identity
我的对象 PlatformUser
包含访问后端 HTTP API 来来回传输数据的代码。以下是我如何实现 find
和 save
方法:
def find(id: UserId): Option[PlatformUser] = {
PlatformUser.fetch(id)
}
def findByEmailAndProvider(email: String, providerId: String): Option[PlatformUser] = {
PlatformUser.fetch(email, providerId)
}
def save(user: Identity): PlatformUser = {
PlatformUser.store(user)
}
合并帐户的逻辑也保留在后端服务中。现在,如果用户不存在,后端服务会生成一个平台 ID。如果发现传入的 Identity
的电子邮件已存在于平台上,则会将身份自动链接到现有的平台 ID(除非发现该电子邮件正在多个帐户上使用对于同一个社交网络,将触发错误)。用户会通过电子邮件通知他们的自动链接的主要地址。
剩下的最后一件事是填充communityProfile
。如果后端服务找不到,则该字段返回为 None
。然后,我会自动将用户重定向到“注册”页面,他们需要在该页面上完成个人资料。
就是这样。我希望这有助于 future 的开发人员尝试弄清楚 SecureSocial 的更复杂用途。
关于scala - 将 SecureSocial 与后端用户服务/存储集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16370314/
我希望在我的 Play 应用程序中使用 OAuth2,但在为其编码寻找入口点时遇到了麻烦。 SecureSocial 似乎是一个很好用的库,但 SecureSocial 的入门指南与其库中实际可用的类
我是 Play Framework 的新手,我正在尝试将 SecureSocial 插件与 Facebook-OAuth2 提供商整合到我的应用程序中。当我向 /login 发送 GET 请求时遇到了
我正在将我的 Play 2 应用程序转换为 SPA,我正在尝试弄清楚如何仍然使用 SecureSocial 进行身份验证。 我正在删除所有 HTML 模板(除了 SecureSocial 用于发送电子
我正在尝试添加 securesocial进入我的游戏 2.3.x项目。这是我的 build.sbt 中的内容文件。 resolvers += Resolver.sonatypeRepo("releas
我正在使用 Play Framework 2.3.2 与 Activator 1.2.3 并且正在试验 SecureSocial插件大师-SNAPSHOT。 Documentation说: Secur
如文档中所述,http://securesocial.ws/guide/views-customization.html我创建了一个CustomTemplatesPlugin,它扩展了Template
我刚刚下载并安装了 SecureSocial 插件。我有一个使用 Java 中的 Play 框架 2.1 构建的 web 应用程序。现在我不知道如何定制这个模块。如果我点击注册,我会出现一个页面,要求
我正在使用 UsernamePasswordProvider 实现注册系统。我希望用户能够直接注册,而不是首先输入他/她的电子邮件并等待 token 。此外,我想通过添加/删除一些输入字段来修改注册表
我正在尝试对使用 Play 2.1.4 和 Socialsecure 的 Web 应用程序进行一些功能测试。在使用 securesocial 之前,测试非常简单,但现在我很难弄清楚如何对安全操作进行测
我正在尝试使用 mysql 5.5.27 数据库进入 securesocial sbt-version 0.12.2 和 play 2.1.0。我应该在 Build.scala 中的变量 appdep
我从 https://github.com/jaliss/securesocial/tree/master 下载了 securesocial-master.zip 1.解压后,切换目录 cd C:\U
使用 Play ! 2.0.4 和 SecureSocial 2 ( http://securesocial.ws/ )。斯卡拉实现。这个问题的大部分将直接引用此处的示例:https://github
我开始自定义 securesocial 供自己使用,并在自定义 View 期间遇到一个问题 - 我试图在窗口顶部制作持久工具栏模板,其中包含如下文本: Welcome, @if(user != nul
使用 Play 2.3.1、Java、Scala 2.10.0 我正在尝试将securesocial集成到我的网络项目中 /build.sbt lazy val root = project.in(
如何使用 Slick (1.0.1) 和 MySQL 数据库实现 SecureSocial(最新快照版本)插件? 我认为我已经完全配置了所有内容。 我的用户模型类中有这样的东西: package mo
我有一个 Play 2.0.4 网络应用程序,它使用 SecureSocial 来允许用户通过第三方提供商(如 twitter、facebook 和 gmail)登录。那时,我没有使用我自己的 Use
我正在使用 playframework,我发现它很痛苦。 我需要在注册时添加额外的字段,例如年龄、性别、国家等。 注册 Controller 是一个对象,不能扩展。尝试为注册编写一个新的 Contro
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
我在数据存储上有一个密码,该密码使用 SecureSocialPasswordHasher.passwordHash 方法进行了哈希处理来自包裹 securesocial.utils.SecureSo
我看到了几个关于这个主题的问题,但没有一个能回答我卡住的部分。顺便说一句,基于人们遇到的问题,我可能建议最终给出 TemplatesPlugin 的默认 java 实现。 我遇到的问题是,我将两个需要
我是一名优秀的程序员,十分优秀!