Node.js 正确使用nano.auth

Node.js 正确使用nano.auth,node.js,authentication,cookies,couchdb,couchdb-nano,Node.js,Authentication,Cookies,Couchdb,Couchdb Nano,因此,根据这里的nano文档:,您可以通过以下方式对用户进行身份验证:(在coffeescript中) 我对此很满意,我可以得到正确的回答,我遇到的问题是事后该怎么办。我最初的想法是(通过futon使用管理员用户名和密码设置时)执行以下操作: 如果我调试nano.auth返回的错误、正文和标题,我会得到: err: null body: { ok: true, name: null, roles: [ '_admin' ] } header: { 'set-cookie': [ 'AuthSes

因此,根据这里的nano文档:,您可以通过以下方式对用户进行身份验证:(在coffeescript中)

我对此很满意,我可以得到正确的回答,我遇到的问题是事后该怎么办。我最初的想法是(通过futon使用管理员用户名和密码设置时)执行以下操作:

如果我调试nano.auth返回的错误、正文和标题,我会得到:

err: null
body: { ok: true, name: null, roles: [ '_admin' ] }
header: { 'set-cookie': [ 'AuthSession=bm9kZV9hZG1pbjo1MzRFMTEwQzoGNe9XUrMu5IKYPK3BP3GQyHeRWQ; Version=1; Path=/; HttpOnly' ],
    date: 'Wed, 16 Apr 2014 05:11:40 GMT',
    'content-type': 'text/plain; charset=utf-8',
    'cache-control': 'must-revalidate',
    'status-code': 200,
    uri: 'http://127.0.0.1:5984/_session' }
在我的测试中,我也尝试了以下似乎也不起作用的方法

nano = require('nano') "#{prefix}://#{security.couchdb.url}"
cookie = ''
nano.auth security.couchdb.admin_user.username, security.couchdb.admin_user.password, (err, response, headers) ->
    console.log "Nano_admin Setup"
    console.log err
    console.log response
    console.log headers
    cookie = headers['set-cookie']
nano = require('nano')
    url: "#{prefix}://#{security.couchdb.url}"
    cookie: "AuthSession=#{cookie}"
nano.db.create 'test', (err, body) -> #err here is always [Error: you are not a server admin.]

有谁能指出我哪里出了错/误解了什么吗?

我明白了——我现在觉得自己很傻。始终记住node.js是异步的

正确的做法是:

nano = require('nano') 'http://localhost:5984'
nano.auth username, password, (err, response, headers) ->
    nano = require('nano')
        url: 'http://localhost:5984'
        cookie: headers['set-cookie']
    nano.db.create 'test', (err, body) -> 
nano = require('nano') "#{prefix}://#{security.couchdb.url}"
cookie = ''
nano.auth security.couchdb.admin_user.username, security.couchdb.admin_user.password, (err, response, headers) ->
    console.log "Nano_admin Setup"
    console.log err
    console.log response
    console.log headers
    cookie = headers['set-cookie']
nano = require('nano')
    url: "#{prefix}://#{security.couchdb.url}"
    cookie: "AuthSession=#{cookie}"
nano.db.create 'test', (err, body) -> #err here is always [Error: you are not a server admin.]
nano = require('nano') 'http://localhost:5984'
nano.auth username, password, (err, response, headers) ->
    nano = require('nano')
        url: 'http://localhost:5984'
        cookie: headers['set-cookie']
    nano.db.create 'test', (err, body) ->