Ember.js 余烬简单身份验证不';t将验证头发送到api

Ember.js 余烬简单身份验证不';t将验证头发送到api,ember.js,ember-data,ember-simple-auth,Ember.js,Ember Data,Ember Simple Auth,我正在尝试在我的余烬应用程序中进行授权 它在客户端工作,但ember不将承载令牌附加到api请求 我的适配器 import DS from 'ember-data'; import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin'; export default DS.JSONAPIAdapter.extend(DataAdapterMixin, { host: 'http://localhost/mone

我正在尝试在我的余烬应用程序中进行授权

它在客户端工作,但ember不将承载令牌附加到api请求

我的适配器

import DS from 'ember-data';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';

export default DS.JSONAPIAdapter.extend(DataAdapterMixin, {
 host: 'http://localhost/money-app-api/web/app_dev.php/api',
 authorizer: 'authorizer:application'
});
我的授权人:

import Ember from 'ember';
import OAuth2Bearer from 'ember-simple-auth/authorizers/oauth2-bearer';
const { isEmpty } = Ember;

export default OAuth2Bearer.extend({
authorize(data, block) {
const accessToken = data['access_token'];
if (!isEmpty(accessToken)) {
  block('Authorization', `Bearer ${accessToken}`);
}
授权人中的accessToken存在且正确。
我的api也是正确的,我是由邮递员测试的。

我正在给你写一个完整的教程,请遵循这个方法,希望它对你有用

   //folders and files tree
    adapters
    --- application.js
    authenticators
    --- oauth2.js
    authorizers
    ---- oauth2-bearer.js
适配器/application.js

import DS from 'ember-data';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';

export default DS.JSONAPIAdapter.extend(DataAdapterMixin,{
  authorizer: 'authorizer:oauth2-bearer',
  host: 'http://localhost/money-app-api/web/app_dev.php',
  namespace: 'api'
});
验证器/oauth2.js

import OAuth2PasswordGrant from 'ember-simple-auth/authenticators/oauth2-password-grant';

export default OAuth2PasswordGrant.extend({
  serverTokenEndpoint: 'http://localhost/money-app-api/web/app_dev.php/token'
});
授权人/oauth2-bearier.js

export { default } from 'ember-simple-auth/authorizers/oauth2-bearer';
现在在您的路径中,
application.js
,您可以使用以下代码:这只是为了演示,您需要根据需要进行修改

  this.get('session').authorize('authorizer:oauth2-bearer', (headerName, headerValue) => {
          headers[headerName] = headerValue;
        });
我正在route/application.js中编写一个身份验证,以澄清更多信息。在本例中,我根据已通过身份验证的会话获取帐户和用户信息

import Ember from 'ember';
import ApplicationRouteMixin from 'ember-simple-auth/mixins/application-route-mixin';
import config from '../config/environment';

export default Ember.Route.extend(ApplicationRouteMixin, {

  model() {
    return Ember.RSVP.hash({
      account: new Ember.RSVP.Promise((resolve, reject) => {

        if (!this.get('session.isAuthenticated')) {
          resolve({});
          return;
        }

        let store = this.store,
          session = this.get('session');

        let headers = {};

        this.get('session').authorize('authorizer:oauth2-bearer', (headerName, headerValue) => {
          headers[headerName] = headerValue;
        });

        return Ember.$.ajax(config.apiUrl + '/api/account', {
          headers: headers
        }).then(data => {
          if (data) {
            store.pushPayload(data);
            resolve(store.peekRecord('user', data.data.id));
          } else {
            reject({});
            session.invalidate();
          }
        }).fail(() => {
          session.invalidate();
        });
      })
    });
  },
  sessionAuthenticated() {
    this.refresh();
    this._super();
  }
});
我希望,这能解决你的问题

重要提示:

 The REST adapter allows your store to communicate with an HTTP server by
  transmitting JSON via XHR. Most Ember.js apps that consume a JSON API
  should use the REST adapter.
  ### Headers customization
  Some APIs require HTTP headers, e.g. to provide an API key. Arbitrary
  headers can be set as key/value pairs on the `RESTAdapter`'s `headers`
  object and Ember Data will send them along with each ajax request.
  ```app/adapters/application.js
  import DS from 'ember-data';
  export default DS.RESTAdapter.extend({
    headers: {
      "API_KEY": "secret key",
      "ANOTHER_HEADER": "Some header value"
    }
  });
  ```
  `headers` can also be used as a computed property to support dynamic
  headers. In the example below, the `session` object has been
  injected into an adapter by Ember's container.
  ```app/adapters/application.js
  import DS from 'ember-data';
  export default DS.RESTAdapter.extend({
    headers: Ember.computed('session.authToken', function() {
      return {
        "API_KEY": this.get("session.authToken"),
        "ANOTHER_HEADER": "Some header value"
      };
    })
  });
  ```

我正在给你写一篇完整的教程,请遵循这一点,希望它对你有用

   //folders and files tree
    adapters
    --- application.js
    authenticators
    --- oauth2.js
    authorizers
    ---- oauth2-bearer.js
适配器/application.js

import DS from 'ember-data';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';

export default DS.JSONAPIAdapter.extend(DataAdapterMixin,{
  authorizer: 'authorizer:oauth2-bearer',
  host: 'http://localhost/money-app-api/web/app_dev.php',
  namespace: 'api'
});
验证器/oauth2.js

import OAuth2PasswordGrant from 'ember-simple-auth/authenticators/oauth2-password-grant';

export default OAuth2PasswordGrant.extend({
  serverTokenEndpoint: 'http://localhost/money-app-api/web/app_dev.php/token'
});
授权人/oauth2-bearier.js

export { default } from 'ember-simple-auth/authorizers/oauth2-bearer';
现在在您的路径中,
application.js
,您可以使用以下代码:这只是为了演示,您需要根据需要进行修改

  this.get('session').authorize('authorizer:oauth2-bearer', (headerName, headerValue) => {
          headers[headerName] = headerValue;
        });
我正在route/application.js中编写一个身份验证,以澄清更多信息。在本例中,我根据已通过身份验证的会话获取帐户和用户信息

import Ember from 'ember';
import ApplicationRouteMixin from 'ember-simple-auth/mixins/application-route-mixin';
import config from '../config/environment';

export default Ember.Route.extend(ApplicationRouteMixin, {

  model() {
    return Ember.RSVP.hash({
      account: new Ember.RSVP.Promise((resolve, reject) => {

        if (!this.get('session.isAuthenticated')) {
          resolve({});
          return;
        }

        let store = this.store,
          session = this.get('session');

        let headers = {};

        this.get('session').authorize('authorizer:oauth2-bearer', (headerName, headerValue) => {
          headers[headerName] = headerValue;
        });

        return Ember.$.ajax(config.apiUrl + '/api/account', {
          headers: headers
        }).then(data => {
          if (data) {
            store.pushPayload(data);
            resolve(store.peekRecord('user', data.data.id));
          } else {
            reject({});
            session.invalidate();
          }
        }).fail(() => {
          session.invalidate();
        });
      })
    });
  },
  sessionAuthenticated() {
    this.refresh();
    this._super();
  }
});
我希望,这能解决你的问题

重要提示:

 The REST adapter allows your store to communicate with an HTTP server by
  transmitting JSON via XHR. Most Ember.js apps that consume a JSON API
  should use the REST adapter.
  ### Headers customization
  Some APIs require HTTP headers, e.g. to provide an API key. Arbitrary
  headers can be set as key/value pairs on the `RESTAdapter`'s `headers`
  object and Ember Data will send them along with each ajax request.
  ```app/adapters/application.js
  import DS from 'ember-data';
  export default DS.RESTAdapter.extend({
    headers: {
      "API_KEY": "secret key",
      "ANOTHER_HEADER": "Some header value"
    }
  });
  ```
  `headers` can also be used as a computed property to support dynamic
  headers. In the example below, the `session` object has been
  injected into an adapter by Ember's container.
  ```app/adapters/application.js
  import DS from 'ember-data';
  export default DS.RESTAdapter.extend({
    headers: Ember.computed('session.authToken', function() {
      return {
        "API_KEY": this.get("session.authToken"),
        "ANOTHER_HEADER": "Some header value"
      };
    })
  });
  ```

我唯一的问题是api中的accept头中没有
授权

allow_头:[“来源”、“X-Custom-Auth”、“内容类型”、“授权”]


这很奇怪,因为当邮递员进行测试时,所有这些都正常工作。

我唯一的问题是,我在api中的accept头中没有
授权

allow_头:[“来源”、“X-Custom-Auth”、“内容类型”、“授权”]


这很奇怪,因为当邮递员对它进行测试时,一切都正常。

我早就有了它,而且它对我也有效。但我的问题是ember并没有将头附加到json适配器,我只是添加了一个在适配器中发送头的技巧,这应该可以帮助解决您的问题。试试看,我已经有了,它对我有用。但我的问题是ember并没有将头附加到json适配器,我只是添加了一个在适配器中发送头的技巧,这应该可以帮助解决您的问题。试一试。请在标题中描述你的问题。请在标题中描述你的问题。