我需要使用 devise 在 Rails 中实现主干登录。请注意,出于我的目的,我也不需要用户注册,因为我只想拥有一个管理员用户,由我在终端中手动创建。
基本上,只要您向正确的设计路线发出 AJAX 发布请求,设计就会为您处理登录(当然假设您正确完成了设计设置过程)。
在 Backbone 中,您可以使用新的模型保存发出此帖子请求。
This tutorial 帮助我设置了我的 Backbone 模型和视图(仅供参考:本教程还介绍了添加注册功能所需的操作)。
本教程有一些更高级的主干设置(例如它使用主干.marionette 和主干.modelbinder),虽然非常有用,但我不想进入。下面是我对您所需要的核心的教程的简化版本。
使用与您的设计登录路径匹配的urlRoot 创建一个模型。对于大多数使用标准用户模型的人来说,下面的urlRoot 路由应该可以工作。注意我的代码写在coffeescript
class MyCoolBackboneApp.Models.UserSession extends Backbone.Model
urlRoot: '/users/sign_in.json'
defaults:
email: ""
password: ""
toJSON: ->
{ user: _.clone(@attributes) }
请注意,devise 期望将参数包装在“用户”中,这就是我们必须覆盖 toJSON 方法的原因
然后在您看来,您需要做的就是将模型与登录凭据一起保存。当然每个人可能会有不同的成功和失败回调,但这里有一个非常基本的实现:
events:
'submit form': 'login'
initialize: =>
@model = new MyCoolBackboneApp.Models.UserSession()
render: =>
$(@el).html( @template() )
@
credentials: ->
{
email: @$('#email').val(),
password: @$('#password').val(),
remember_me: 1
}
login: (event)->
event.preventDefault()
@model.save(@credentials(),
success: (userSession, response) =>
window.location.href = "/"
error: (userSession, response) =>
message = $.parseJSON(response.responseText).error
alert(message)
)
您还应该阅读this tutorial,了解如何设置设计 ajax 身份验证。
完成上述教程后,您应该能够使用正确的凭据保存您的 UserSession 模型(就像我在视图中所做的那样)并成功登录(假设您的数据库中有一个已保存的现有用户)。当您被重定向到成功回调时,您将知道您已成功登录。
然后在应用程序其余部分的控制器中,您应该能够使用设计助手:user_signed_in? 或 current_user 等。
(如果您已登录但这些帮助程序出现未定义的方法错误,请尝试将:include Devise::Controllers::Helpers 添加到您的控制器)。
最后,Alex P 的回复可以引导您了解如何在 Backbone 视图中使用 user_signed_in? 布尔值。