SocketStream:在/server/app.coffee之外访问@session

时间:2011-08-18 20:30:00

标签: session node.js socketstream

我刚刚开始使用SocketStream。 (v0.1.0)我使用exports.actions.login函数创建了文件/app/server/auth.coffee。我想在这个文件中访问@ 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 个答案:

答案 0 :(得分:2)

有趣的是你提出了一个关于会话的问题,因为我在过去的几天里作为SocketStream 0.2的一部分重写了很多代码。

好消息是@session变量将回到0.2,因为我找到了一种将会话数据传递到后端的有效方法,而不必使用丑陋的@getSession回调。

要具体回答您的问题,@ session变量只是在处理请求之前注入export.actions对象的另一个属性。因此,你不能有一个名为'session'的动作(虽然这个'魔术变量'的名字可以在0.2的下一个版本中配置。)

exports.authenticate = true设置不适用于您的情况。

我很想知道如何/为什么要在/ app / server代码之外使用@session对象。

我将在几天后将所有最新的会话代码提交到github上的0.2预览分支。

希望有所帮助,

欧文

答案 1 :(得分:0)

您只能使用app/server方法在服务器端代码(@getCurrentSession)内获取当前会话。

您还必须添加:

exports.authenticate = true

到该文件。