Ember-auth,ember和ajax身份验证:访问ember auth-token

时间:2014-03-07 11:12:27

标签: ruby-on-rails ajax authentication ember.js

我正在使用Ember-Auth并登录我的rails应用程序。

登录后,auth.auth-token已设置,我可以在我的模板中查看:

{{auth.authToken}}

我不需要将此令牌与我的余烬数据请求一起传递,但是我的生活无法弄清楚如何访问它。

App.Store = DS.Store.extend
  adapter: DS.RESTAdapter.reopen
    namespace: 'api/v1'
    setHeaders: (->
      this.set('headers', { "auth_token": <what goes here?>  });
      return
    ).on('init');

我尝试过的一些事情:

App.Session.get("authToken")
App.auth_token
App.auth.auth_token
App.Auth.get('auth_token')
App.Auth.get('authToken')

似乎有很多人以不同的方式做到这一点,因为包含了快速变化的API。但我所尝试的一切最终都是未定义的。

DEBUG: -------------------------------
DEBUG: Ember      : 1.5.0-beta.3
DEBUG: Ember Data : 1.0.0-beta.7.f87cba88
DEBUG: Handlebars : 1.3.0
DEBUG: jQuery     : 1.11.0
DEBUG: ------------------------------- 

Auth配置:

App.Auth = Ember.Auth.extend
  request: 'jquery'
  response: 'json'
  strategy: 'token'
  session: 'cookie'
  signInEndPoint: '/api/v1/user_session' # api url for sign-in
  signOutEndPoint: '/api/v1/user_session' # api url for sign-out

  tokenKey: 'auth_token' # param returned from api containing auth token
  tokenIdKey: 'user_id' # param returned from api for id of authenticated user
  tokenLocation: 'param' # auth token will be sent to api as a param

1 个答案:

答案 0 :(得分:1)

我相信这个问题的答案是我的身份验证服务器没有在我的json响应中返回具有正确名称的令牌。

由于遇到此问题,我切换到了ember-simple-auth,但是在我发现我的服务器返回的json中我的身份验证令牌的名称是:&#34; auth_token&#34;之后我遇到了类似的问题。而不是ember-simple-auth所期望的:&#34; access_token&#34;

所以我的猜测是auth看到请求成功,这就解释了为什么我可以登录。但是后来会话是空的,因为ember-simple-auth正在寻找一个不同名称的令牌,并且没有创建会话的麻烦。

也许对ember-auth和ember-simple-auth人员的建议是在返回的令牌丢失时添加警告或错误?

希望这有助于其他人:)