api - EmberAuth 登录用户成功注册

标签 api authentication ember.js

所以我已经完成了 EmberAuth 的所有设置和工作,并且我正在实现用户注册。我的 API 设置为在用户成功注册后返回 auth_token,但我不太确定如何将应用程序移至已登录状态。

我想出的唯一真正有效的解决方案是调用 App.Auth.signIn注册成功后。在“它有效”的意义上这很好,但是当我已经拥有他们的身份验证 token 时,它确实涉及到服务器的不必要的额外往返以使用户登录。

sendRegistration: () ->
  self = @
  $.post('/users', 
    user:
      email: @email,
      password: @password,
      password_confirmation: @passwordConfirmation)
  .done (response) ->
    App.Auth.signIn(
      data:
        email: self.email
        password: self.password
        remember: true
    )

最佳答案

ember-auth在这里开发。

checkout 最新版本 (v7.1.0)。它具有解决此用例的新功能。如果您已经拥有所有身份验证信息,您现在可以直接注入(inject)登录 session 。只需构造一个预期的“正常”服务器响应,并将其提供给 App.Auth.createSession() .

示例:如果预期的服务器响应是

{"auth_token":"foo", "user_id": 1, "rmb_token":"bar"}

然后打电话
App.Auth.createSession('{"auth_token":"foo", "user_id": 1, "rmb_token":"bar"}');

这会注入(inject)身份验证 session 而不会访问服务器。

它在清除 session 中的对应物(再次没有击中服务器)是
App.Auth.destroySession();

docs 的相关部分是 直接 session 注入(inject)/销毁 .

编辑/更新对于 googlers:语法已更改为 ember-auth 9.x (最新发布)。
auth现在是注入(inject)到路由、 Controller 和 View 中的对象。所以,如果你正在制作 createSession()destroySession()在那里打电话,你可以写
this.get('auth').createSession( /* args */ );
this.get('auth').destroySession( /* args */ );
createSession()电话也可以澄清为
this.get('auth').createSession({auth_token: 'foo', user_id: 1, rmb_token: 'bar'});

因为两者 createSession()destroySession()现在接受一个对象。

关于api - EmberAuth 登录用户成功注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17561082/

相关文章:

php - 使用 Laravel 5,如何确定 Mailgun 电子邮件是否已成功发送?

api - 未定义索引 : media Twitter API

javascript - Google Ajax Feed API - 如何更改日期格式?

ruby-on-rails - 带有命名空间的自定义设计类的未初始化常量(NameError)

ruby-on-rails-3 - 仅当用户登录时显示编辑用户链接

javascript - Ember js - 在元素被隐藏并由 ember {{/if}} 条件重新显示后,Jquery 悬停效果停止工作

ember.js - Ember.js 中的自嵌套无限路由

java - 使用 shiro 1.2.1 对数据库进行身份验证

objective-c - didReceiveAuthenticationChallenge 未被调用

ember.js - 有趣的 Ember,CoffeeScript 优先级