5

我开始在我的 play/scala 应用程序中集成 SecureSocial,但我真的不喜欢它在不同视图之间所做的所有重定向。

示例 - 尝试从其默认登录页面登录,如果您输入错误的密码,您将被重定向到不同的页面 (url),但使用相同的登录表单。唯一不同的是有一个错误信息......

我想在我的主页角有一个简单的登录表单(用户/密码提供程序),它使用 ajax 提交它的数据,这些数据在服务器上得到验证,并做出响应以显示错误消息或更改窗口。地点。在此表单旁边,我将放置一个链接以转到更高级的登录页面,该页面添加了使用其他提供商(如 fb/twitter 等)的选项。但从该页面我也想使用 ajax 提交详细信息并获得响应.

我试图浏览 SecureSocial 源,但在那里有点迷路。

谁能给我一个想法如何使用 SecureSocial 但不使用它的任何观点?

注意:我对自定义他们的视图不感兴趣,这不仅仅是一个 CSS/设计问题,我想通过 Ajaxly 处理登录详细信息,而不是通过正常的表单提交和重定向......

4

1 回答 1

2

在对 SecureSocial 代码进行了更多搜索之后,我对它的运行方式有了更好的理解。

您可以单独使用您在 play.plugins 文件中列出的任何提供程序从您自己的登录/身份验证代码中验证用户信息。只需确保您发送提供商需要的正确参数即可。

我喜欢 SecureSocial 的 ProviderController 类根据参数动态决定使用哪个提供者的方式。但我不喜欢它做出的响应——重定向。我想用一些数据响应 ajax 请求,让客户端 js 处理它。

这是我的解决方案:

几乎将所有 ProviderController 代码复制到我自己的 Auth.scala 文件(控制器)中。更改了与“case ex, case _”相关的重定向,在添加与用户相关的 SecureSocial 会话密钥时保持重定向成功验证。从我的路由文件中删除了所有与 SecureSocial 相关的路由。使用 logintype (userpass/google/fb/etc...) 放置一个额外的隐藏字段,并将我的登录 ajax 帖子配置为将其与帖子一起发送到我的 Auth 控制器。

如果您需要更多信息,请在此处发表评论,我将编辑答案。

于 2013-01-21T09:12:44.267 回答