我试图获得' session.current_user'所有路径和控制器都可访问的对象。它应该可以作为承诺访问,因此我可以从控制器预先过滤模型。但我似乎无法使承诺链正常工作。
我在ember-simple-auth
的身份验证初始化程序中有这个Ember.Application.initializer
name: 'authentication',
initialize: (container, application) ->
Ember.SimpleAuth.Authenticators.OAuth2.reopen
serverTokenEndpoint: '/oauth/token'
Ember.SimpleAuth.Session.reopen
+computed
current_user: ->
Ember.run ->
Ember.$.get('/api/v1/credentials/me').then (response) ->
container.lookup('store:main').find('user', response.user.id)
这在应用程序控制器中:
class App.ApplicationController extends Ember.Controller
+computed session.current_user
current_user_gravatar_url: ->
@get('session.current_user').then (current_user) ->
# but I get this here
Em.inspect(current_user)
# => "<DS.PromiseObject:ember656>"
# 'http://www.gravatar.com/avatar/' + md5(current_user.get('email'))
对用户模型的请求在应用程序控制器操作之后出现。
XHR finished loading: "http://localhost:3000/api/v1/users/3".
我在这里做错了什么?嵌套是否太深,或者我应该以某种方式拆分&#39; current_user&#39;计算属性为单独的依赖计算属性&gt;
答案 0 :(得分:0)
Ember.SimpleAuth回购中有一个例子说明了如何做到这一点:https://github.com/simplabs/ember-simple-auth/blob/master/examples/4-authenticated-account.html