Ember CLI + Ember Data + Simple Auth: авторизация не вызывается

я использую Ember CLI + Ember Data + Simple Auth. Аутентификатор работает нормально. Но когда я делаю Rest Call с Ember Data Rest Adapter this.store.findAll("user");, функция авторизации в моем пользовательском авторизаторе не вызывается.

Конечная точка Rest API находится в другом домене, поэтому я добавил URL-адрес в crossOriginWhitelist в моем окружении.js.

environment.js:

module.exports = function(environment) {
    var ENV = {
        // some configuration
    };

    ENV['simple-auth'] = {
        crossOriginWhitelist: ['http://api.xxxx.com'],
        authorizer: 'authorizer:xxxx',
        routeAfterAuthentication: 'dashboard',
    };

    return ENV;
};

авторизатор

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

var XXXXAuthorizer = Base.extend({
    authorize: function(jqXHR, requestOptions) {
        // Some Code, gets not called, damn it :(
    }
});



export default {
    name: 'authorization',
    before: 'simple-auth',
    initialize: function(container) {
        container.register('authorizer:xxxx', XXXXAuthorizer);
    }
};

index.html

....
        <script>
            window.XXXXWebclientENV = {{ENV}};
            window.ENV = window.MyAppENV;
            window.EmberENV = window.XXXXWebclientENV.EmberENV;
        </script>
        <script>
            window.XXXXWebclient = require('xxxx-webclient/app')['default'].create(XXXXWebclientENV.APP);
        </script>
....

Спасибо за помощь :)


person thpnk    schedule 03.09.2014    source источник


Ответы (2)


У меня была похожая проблема. Для меня это был конфиг crossOriginWhitelist.

Я установил это так:

// config/environment.js

ENV['simple-auth'] = {
  crossOriginWhitelist: ['*']   // <-- Make sure it's an array, not a string
};

чтобы увидеть, смогу ли я заставить его работать (я мог), затем я мог сузить его, чтобы точно определить, какой URL-адрес я должен использовать для обеспечения соблюдения ограничения (номер порта, имя хоста и т. д.).

Не оставляйте это так!

На самом деле вы должны выяснить, какой URL-адрес работает для белого списка, и использовать его.

person Troy    schedule 21.05.2015

Я столкнулся с той же проблемой. У меня такие же настройки, но функция авторизации не вызывается. Может быть, вы можете попробовать, добавив номер порта в свой crossOriginWhiteList url.

Я добавляю строку window.ENV = window.MyAppENV в новый инициализатор, который запускается перед простой аутентификацией. Вы добавили это в индексный файл, и, возможно, это причина, по которой простая аутентификация не может прочитать вашу конфигурацию.

Другая конфигурация routeAfterAuthentication: 'dashboard', работает правильно? Если нет, то это может быть причиной. Попробуйте добавить новый инициализатор, например

  export default {
  name: 'simple-auth-config',
  before: 'simple-auth',

    initialize: function() {
        window.ENV = window.MyAppNameENV;
    }    
 };
person Tushar Patel    schedule 05.09.2014
comment
Я только что проверил тот же домен, и он работает нормально. Таким образом, это определенно проблема домена с перекрестным происхождением. Я думаю, что простая аутентификация не может прочитать конфигурацию crossOriginWhiteList. - person Tushar Patel; 05.09.2014
comment
Он начал работать для меня. Ранее я также определил номер порта, который был неправильным. Поэтому после того, как я удалил этот номер порта, он у меня работает нормально. - person Tushar Patel; 05.09.2014