使用securesocial服务而不使用其视图

sam*_*amz 5 authentication ajax login playframework securesocial

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

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

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

我试图浏览SecureSocial源,但在那里有点迷失.

任何人都可以告诉我如何使用SecureSocial,但不使用它的任何观点?

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

sam*_*amz 2

在对 SecureSocial 代码进行了更多翻阅之后,我更好地了解了它的运作方式。

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

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

这是我的解决方案:

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

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