2014-09-03 2 views
2

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

Контент конечной точки останова находится в другом домене, поэтому я добавил URL-адрес в crossOriginWhitelist в свой environment.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; 
}; 

Authorizer

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> 
.... 

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

ответ

0

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

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

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

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

    initialize: function() { 
     window.ENV = window.MyAppNameENV; 
    }  
}; 
+0

Я только что проверил один и тот же домен, и он отлично работает. Таким образом, это определенно проблема с перекрестным доменом. Я думаю, что simple-auth не может прочитать конфигурацию 'crossOriginWhiteList'. –

+0

Это начало работать для меня. Я ранее определял номер порта, который был неправильным. Поэтому после того, как я удалил этот номер порта, он отлично работает для меня. –

1

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

Я его так:

// config/environment.js 

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

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

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

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

Смежные вопросы