需要Ember-Simple-Auth currentUser示例帮助

时间:2014-07-15 12:47:12

标签: ember.js ember-cli ember-simple-auth

所以我意识到这里的帐户示例:https://github.com/simplabs/ember-simple-auth/blob/8863c032fcea6148a5b3365be5d66dc2389d301d/examples/4-authenticated-account.html

提供用于检索当前登录帐户的代码。我只是对这个例子有几个问题,因为我试图让它在Ember-CLI应用程序中运行。

SimpleAuth正在示例中使用,但我不知道它来自哪里,因为我正在尝试import SimpleAuth from ...但我不知道是什么文件从中导入。

此外,我想知道服务器的响应现在是否需要返回user_id以及access_token / refresh_token?

如果是这样,oauth是否兼容?

编辑:我当前的代码

// app/initializers/oauth-custom.js
import Ember from 'ember';
import OAuthCustomAuthenticator from 'front/authenticators/oauth-custom';
import Session from 'simple-auth/session';


export default {
    name: 'oauth-custom',
    before: 'simple-auth',

    initialize: function(container) {
        Session.reopen({
            currentUser: function() {
                var user_id = this.get('user_id');
                if (!Ember.isEmpty(user_id)) {
                    return container.lookup('store:main').find('user', user_id);
                }
            }.property('user_id')
        });
        container.register(
            'oauth-custom:oauth2-password-grant',
            OAuthCustomAuthenticator
        );
    }
};

身份验证工作完美无缺,只是因为我没有看到任何虚构试图制作的电话/用户/ ID。

来自服务器的示例响应:

{
    "access_token": "asdf",
    "token_type": "bearer",
    "expires": 1406082157,
    "expires_in": 604800,
    "refresh_token": "asdf",
    "user_id": "1"
}

1 个答案:

答案 0 :(得分:3)

SimpleAuth全局仅在库的浏览器分发中定义。当您使用ember-cli时,您可以导入单个组件,而不是通过全局访问它们(请参阅此示例:http://log.simplabs.com/post/90339547725/using-ember-simple-auth-with-ember-cli)。

例如得到你喜欢的会话:

import Session from 'simple-auth/session';

Session.reopen({
  …
});

上面链接的示例要求服务器在响应中包含user_id,该响应不符合OAuth 2.0规范,而是自定义。如果您希望/需要符合要求,您可以获得当前用户,例如通过GET /me或者......一旦会话被认证,就像那样。