SocketStream: доступ к @session вне /server/app.coffee

Я только начинаю с SocketStream. (v0.1.0) Я создал файл /app/server/auth.coffee с функцией exports.actions.login. Я хотел бы получить доступ к @session.setUserId в этом файле, но мне трудно понять, где находится @session и как получить к нему доступ за пределами /app/server/app.coffee.

Вот мой auth.coffee с комментариями, где я хотел бы получить доступ к сессии.

users = [
  username: 'craig'
  password: 'craig',
  username: 'joe'
  password: 'joe',
]

authenticate = (credentials, cb) ->
  user = _.detect users, (user) ->
    user.username == credentials.username and user.password == credentials.password
  authenticated = true if user?
  callback cb, authenticated

exports.actions = 
  login: (credentials, cb) ->
    authenticate credentials, (user) ->
      # here is where i'd like to set the userId like so:
      # @session.setUserId credentials.username
      callback cb user

2 ответа

Решение

Интересно, что вы задали вопрос о сессиях в данный момент, так как за последние несколько дней я переписывал большую часть этого кода в рамках SocketStream 0.2.

Хорошей новостью является то, что переменная @session вернется в 0.2, поскольку я нашел эффективный способ передачи данных сеанса на серверную часть без использования обратного обратного вызова @getSession.

Чтобы конкретно ответить на ваш вопрос, переменная @session - это просто другое свойство, которое вводится в объект export.actions перед обработкой запроса. Следовательно, у вас не может быть действия, называемого "сессия" (хотя имя этой "магической переменной" будет настраиваться в следующей версии 0.2).

Параметр exports.authenticate = true не применяется в вашем случае.

Мне интересно узнать, как / почему вы хотите использовать объект @session вне вашего кода / app / server.

Я добавлю весь последний код сеанса в ветку предварительного просмотра 0.2 на github через несколько дней.

Надеюсь, это поможет,

Оуэн

Вы получаете текущий сеанс только внутри вашего серверного кода (app/server) с использованием @getCurrentSession метод.

Также вы должны добавить:

exports.authenticate = true

в этот файл.

Другие вопросы по тегам