[英]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.