所以我已经完成了 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/