如何在ember-simple-auth会话中存储用户ID?

时间:2015-06-27 10:10:23

标签: ember.js ember-simple-auth

我想在会话中存储用户ID。我在自定义身份验证器中有这种身份验证方法:

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。我在互联网上找到了很多解决方案,但没有任何效果。

有没有一个简单的解决方案呢?

1 个答案:

答案 0 :(得分:2)

您在user_idauthenticator)而不是_this.set('user_id', response.user_id)上设置了sessionuser_id应该传递给authenticator中的resolve方法。这样,secure.user_id中的session即可访问您的用户ID。