2016-04-14 91 views
0

我正在使用ember simple-auth和ember simple-auth-token,并且我想将用户令牌的值用于ajax调用。 如何访问令牌值?我试过的语法如下:Ember Simple Auth&Ember简单的身份验证令牌

headers: {"Authorization":"Token" + " auth_token"} 

headers: {"Authorization":"Token" + " session.data"} 

,但他们都没有工作。

回答

1

不知道有关简单身份验证令牌,但我使用的余烬,简单权威性和我加入令牌延伸的基础授权各自发出的请求,如下图所示:

// app/authorizers/my-own-authorizer.js 

import Base from 'ember-simple-auth/authorizers/base'; 

export default Base.extend({ 

    /** 
    * Authorizes all outgoing requests by a session-token that has been received during a login process. 
    * If such a session token does not exist, it does not add anything. 
    * @override 
    * @param {Object} sessionData received from the backend on a successful login 
    * @param {Function} addHeaderFunction function that appends a custom header into the next request 
    */ 
    authorize(sessionData, addHeaderFunction){ 
    const sessionToken = Ember.get(sessionData, "meta.session-token"); 
    if (Ember.isPresent(sessionToken)) { 
     addHeaderFunction('authorization', sessionToken); 
    }  
    } 
}); 

不要忘记调整您的应用程序适配器,以便它使用授权人:

// app/adapters/application.js 
... 
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin'; 

export default DS.JSONAPIAdapter.extend(DataAdapterMixin, { 
.... 
authorizer: 'authorizer:my-own-authorizer', 
... 
} 
+0

非常感谢您的回答,但我正在寻找更简单的东西。我终于发现我可以通过调用self.get(“session.data.authenticated.auth_token”)来访问令牌。 – Jack

+0

我曾经这样做过,但docs明确地讨论了扩展authorizer和重写'authorize()'函数。我发现现在的代码更具可读性,因为我不必将不属于他们的问题混合在一起。 – Pavol

+1

使用ember-simple-auth-token我只需要使用DataAdapterMixin。其他的一切都是自动处理的...... – acorncom