0

由于某种原因未设置“授权”标头。我尝试在 config/environment.js 中设置授权者

更新:根据@marcoow 的建议

 ENV['simple-auth'] = {
    crossOriginWhitelist: ['*'],
    authorizer: 'simple-auth-authorizer:devise'
  };
  ENV['simple-auth-devise'] = {
    serverTokenEndpoint: 'users/sign_in',
  };

...我可以通过更新其他资源(例如 post Authorization: Token token="", user_email="" 未添加到我的服务器调用中来登录我的应用程序

控制器/dashboard.js

import Ember from 'ember';
export
default Ember.Controller.extend({
    actions: {
        add: function () {
            var name = this.get('name');
            var start = this.get('Start');
            var end = this.get('End');
            var game = this.store.createRecord('game', {
                name: name,
                start: start,
                end: end
            });
            game.save();
        }
    }
});

我的请求看起来像这样

**1。我的理解是这里的请求标头也应该包含 Authorization: 标头。

  1. 我正在使用 rack-cors gem 来启用 cors
  2. 我查看了ember-simple-auth-devise / lib / simple-auth-devise / authorizers / devise.js 的来源。授权:函数()将此添加到请求中。我不确定如何调用此方法。

请求标头

登录控制器

import Ember from 'ember';
import LoginControllerMixin from 'simple-auth/mixins/login-controller-mixin';
export
default Ember.Controller.extend(LoginControllerMixin, {
    authenticator: 'simple-auth-authenticator:devise',
    actions: {
        authenticate: function () {
            console.log('i was called');
            var self = this;
            var data = this.getProperties('identification', 'password');
            self.get('session').authenticate(this.get('authenticator'), data).then(function () {
                self.transitionToRoute('dashboard');
            }, function (error) {
                console.log(error);
            });
        }
    }
});

我可以看到:

我如何使用设计授权我的模型#save ....使用 ember-data 在控制器中设计授权器

只是为了调试,我在 route/dashboard.js 中做了这个

import Ember from 'ember';
import AuthenticatedRouteMixin from 'simple-auth/mixins/authenticated-route-mixin';
export default Ember.Route.extend(AuthenticatedRouteMixin,{
  model: function() {
    console.log(this.get('session.isAuthenticated')); # this is true 
  }
});
4

2 回答 2

1

crossOriginWhitelist不是 Devise 包的属性 - 您需要为 Ember Simple Auth 基础包配置它:

ENV['simple-auth'] = {
  crossOriginWhitelist: ['*']
};

ENV['simple-auth-devise'] = {
  serverTokenEndpoint: 'users/sign_in',
  authorizer: 'authorizer:devise'
};
于 2014-11-07T17:46:37.960 回答
0

有同样的问题,我的授权标头也没有添加。由于 Rails 验证的响应,我的问题。在 ember-simple-auth 中,我将 IdentificationAttributeName 设置为“username”,但是 Rails 的 json 响应 authenticate(“sessions#create” action) 是这样的:{ token: 'xxxxx', user_email: 'xxxx' },没有“用户名”字段!

通过从会话创建操作的响应中删除“user_email”字段解决,添加“用户名”字段。希望这会有所帮助。

于 2015-02-12T07:12:17.517 回答