SocketStream: доступ к @session вне /server/app.coffee - PullRequest
0 голосов
/ 19 августа 2011

Я только начинаю с 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 ]

2 голосов
/ 19 августа 2011

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

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

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

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

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

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

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

Owen

0 голосов
/ 19 августа 2011

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

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

exports.authenticate = true

к этому файлу.

...