2014-04-15 69 views
0

我试图设置在Node.js服务器上运行的Ember App的授权。ember-simple-auth oauth2授权者问题

我正在使用oauth2身份验证器,它向服务器请求一个令牌。这工作正常。我能够为应用程序提供一个令牌,将其保存在本地存储中。

然而,当我使后续请求,授权人不加入令牌到头部,我已经初始化用的文档中描述(http://ember-simple-auth.simplabs.com/ember-simple-auth-oauth2-api-docs.html)的方法中的授权人:

Ember.Application.initializer({ 
    name: 'authentication', 
    initialize: function(container, application) { 
    Ember.SimpleAuth.setup(container, application, { 
     authorizerFactory: 'authorizer:oauth2-bearer' 
    }); 
    } 
}); 

var App = Ember.Application.create(); 

我已经添加一个init方法给Authorizer,当它初始化时将消息记录到服务器,所以我知道它正在被加载。唯一的一点是,授权人的授权方法永远不会被调用。

感觉就像我错过了图书馆的基本概念。

我有我所用AuthenticatedRouteMixin像这样保护的用户路线:

App.UsersRoute = Ember.Route.extend(Ember.SimpleAuth.AuthenticatedRouteMixin, { 
    model: function() { 
    return this.get('store').find('user'); 
    } 
}); 

这是获取数据,罚款,并重定向到/登录,如果没有一个标记是会话,但请求标题不包括令牌:

GET /users HTTP/1.1 
Host: ***** 
Connection: keep-alive 
Cache-Control: no-cache 
Pragma: no-cache 
Accept: application/json, text/javascript, */*; q=0.01 
Origin: ***** 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36 
Referer: ***** 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8 

任何帮助,你可以给我将不胜感激。

回答

1

您的REST API服务于不同的来源,而不是应用程序从可能的加载? Ember.SimpleAuth没有默认授权者交叉原点请求(请参见:https://github.com/simplabs/ember-simple-auth#cross-origin-authorization

+0

Marcos当我将交叉原始授权添加到环境配置文件时,我的应用程序应用程序发送OPTIONS请求而不是GET。有什么想法吗? – Moh

+1

这就是CORS--浏览器首先发送一个OPTIONS请求,以便在发送实际的GET请求之前找出服务器允许的内容。您还需要确保您的服务器支持CORS并正确响应这些OPTIONS请求。 – marcoow

+0

感谢马科斯你说得对,我在服务器上配置了cors,看起来很有效。当我想通过配置crossOriginWhitelist来使用auth设计授权者时遇到此问题的一件小事,但我实际上无法在AuthenticatedRoute下的标头中发送令牌和电子邮件,您是否知道我做错了什么? – Moh