2015-06-27 46 views
1

我想在會話中存儲用戶標識。我在自定義驗證器中使用此驗證方法:如何在會話中使用ember-simple-auth存儲用戶標識?

authenticate: (credentials) -> 
    _this = this 
    new (Ember.RSVP.Promise) (resolve, reject) -> 
    Ember.$.ajax(
     url: 'http://localhost:3000/api/v1/sessions' 
     type: 'POST' 
     data: session: 
     email: credentials.identification 
     password: credentials.password 
    ).then ((response) -> 
     _this.set('user_id', response.user_id) 
     Ember.run -> 
     resolve token: response.token 
    ), (xhr, status, error) -> 
     response = JSON.parse(xhr.responseText) 
     Ember.run -> 
     reject response.error 

這是咖啡腳本,但它的工作原理類似於javascript。正如你可以這樣,我在會話中設置'user_id'。

app/initializers/custom-session,我有這樣的:

import Ember from "ember"; 
import Session from "simple-auth/session"; 

export default { 
    name: "current-user", 
    before: "simple-auth", 
    initialize: function(container) { 
    Session.reopen({ 
     setCurrentUser: function() { 
     return this.get('user_id') 
     }.observes('secure.access_token') 
    }); 
    } 
}; 

user_id總是返回undefined。我在互聯網上找到了很多解決方案,但沒有任何成效

有沒有一個簡單的解決方案來做到這一點?

回答

2

要設置在authenticator_this.set('user_id', response.user_id))的user_id,而不是session。應將user_id傳遞給您的authenticator中的解析方法。這樣,您的用戶ID可通過在您的session中訪問。

+0

我添加了'then'回調我的身份驗證,它的工作原理。我不喜歡的唯一想法是用戶身份證明是通過我在身份驗證器中發佈的發佈請求給出的。我在回調方法中無法訪問它。你知道是否有可能獲得信息而不做第二次請求? – Dougui

+0

@Dougui回撥方法是什麼意思?你能給個例子嗎? – jcbvm

相關問題