2014-09-03 2 views
2

Ember CLI + Ember Data + Simple Auth를 사용 중입니다. 인증자가 잘 작동합니다. 하지만 Ember Data Rest Adapter this.store.findAll("user");으로 전화를 걸 때 내 맞춤형 인증 기관의 권한 부여 기능이 호출되지 않습니다.Ember CLI + Ember 데이터 + 단순 인증 : 권한이 호출되지 않음

나머지 API 끝점은 다른 도메인에 있으므로 내 환경 .js의 crossOriginWhitelist에 URL을 추가했습니다.

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

감사합니다 :)

답변

0

나는 동일한 문제에 직면하고있다. 동일한 설정이 있지만 권한 부여 함수가 호출되지 않습니다. crossOriginWhiteList url에 포트 번호를 추가해볼 수도 있습니다.

단순 인증 전에 실행되는 새로운 초기화 프로그램에 window.ENV = window.MyAppENV 행을 추가합니다. index 파일에 추가 했으므로 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 설정이었다.

나는 다음과 같이 설정하십시오 : 나는 (그것을 (내가 할 수있는), 다음 내가 제한을 적용하는 데 사용해야하는 어떤 URL을 정확하게 파악하는 범위를 좁힐 수있는 작업을 얻을 수 있다면

// config/environment.js 

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

보고 포트 번호 및 호스트 이름 등).

그래도 그대로 두지 마십시오!

허용 된 사이트 목록에 어떤 URL이 사용되는지 실제로 알아 내야합니다.