EmberAuth在成功注册时登录用户

时间:2013-07-10 01:33:33

标签: api authentication ember.js

所以我有EmberAuth所有设置和工作,我正在实施用户注册。我的API设置为在用户成功注册后返回auth_token,但我不太确定如何将应用程序移动到signedIn状态。

我提出的唯一解决方案是在成功注册后调用App.Auth.signIn。这在'it works'意义上是好的,但它确实涉及到什么应该是一个不必要的额外往返服务器,以便在我已经有他们的身份验证令牌时签署用户。

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
    )

2 个答案:

答案 0 :(得分:3)

ember-auth dev这里。

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

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

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

然后致电

App.Auth.createSession('{"auth_token":"foo", "user_id": 1, "rmb_token":"bar"}');

这会在不命中服务器的情况下注入身份验证会话。

清除会话的同行(再次没有点击服务器)是

App.Auth.destroySession();

docs的相关部分是直接会话注入/销毁


googlers的

修改/更新:语法因ember-auth 9.x(最新版本)而发生变化。

auth现在是注入路径,控制器和视图的对象。因此,如果您在那里进行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()现在都接受了一个对象。

答案 1 :(得分:0)

我目前正在做同样的事情,提出额外的请求。但我确实调查了一下实现。

Ember-Authdummy request adapter只返回而不发出请求,使用opts.status来确定要返回的内容。

诀窍是根据需要从_request实例切换出Auth适配器。

该项目使用EmberScript,这是我不熟悉的Coffeescript的扩展。因此额外的请求现在已经足够了。 :)