繁体   English   中英

EmberJS从ember-simple-auth身份验证器检索当前用户

[英]EmberJS retrieve current user from ember-simple-auth authenticator

问题:

我正在尝试通过扩展ember-simple-auth/authenticators/base来检索从ember-simple-auth登录的当前用户。 我只想创建一个名为currentUser()的函数,该函数将返回用户名,但是每当我尝试调用该函数时,都会收到错误消息:

Uncaught TypeError: this.get(...).currentUser is not a function(…)

尝试:

函数currentUser()定义如下:

// app/authenticators/oauth2.js
import Ember from 'ember';
import Base from 'ember-simple-auth/authenticators/base';

const RSVP = Ember.RSVP;

export default Base.extend({
  restore() {
      // restore user session
  },
  currentUser() {
      return this.get("username");
  }),
  authenticate(username, password) {
    this.set('username', username);
    return new RSVP.Promise((resolve, reject) => {
      Ember.$.ajax({
        url: config.baseURL + "accounts/login",
        data: {
          username: username,
          password: password
        },
        type: 'POST',
        dataType: 'json',
        contentType: 'application/x-www-form-urlencoded',
        complete: (response)=> {
          if (response.responseJSON.isAuthenticated)
            resolve({isAuthenticated: true});
          else
            reject("Wrong credentials.");
        }
      });
    });
  },
  invalidate() {
    // log out
  }
});

我使用以下函数调用了该函数:

// app/controllers/application.js
import Ember from 'ember';

export default Ember.Controller.extend({
  session: Ember.inject.service('session'),

  actions: {
    alertSession() {
      console.log("!! " + this.get('session').currentUser());
    },
    invalidateSession() {
      this.get('session').invalidate();
      this.transitionToRoute('login');
    }
  }
});

this.get('session').invalidate(); 可以,但是this.get('session').currentUser(); 将返回上述错误。 请让我知道如何解决此问题。 另外,我正在使用Ember 2.5.1。

谢谢!

在您的应用程序控制器中,您正在从会话服务中调用currentUser() ,而您已经在oauth2.js身份验证器中定义了currentUser() 执行可能会失败,因为您尚未修改会话服务以引用对身份验证器的currentUser函数的引用。

另一个函数成功执行,因为会话服务具有调用指定的验证者的invalidate()函数所必需的引用。

您可以考虑使用ember-simple-auth的建议来管理当前用户 这样,您可以探索一种解决方案,该解决方案利用与会话服务结合使用的隔离currentUser服务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM