couchDB,python和身份验证

idi*_*ype 11 python couchdb

我安装了couchDB v 0.10.0,并试图通过从couchDB wiki下载的Couch类中的python进行交谈.问题是:

Create database 'mydb': {'error': 'unauthorized', 'reason': 'You are not a server admin.'}
Run Code Online (Sandbox Code Playgroud)

我手动编辑了local.ini文件,以包含我的标准osx登录名和密码.我现在可以通过蒲团完全访问但没有快乐WRT python.这是http头问题吗?

亏本 - 谢谢!

lys*_*xia 21

为了总结David的回复,(即"这是我在使用couchdb 1.0.2的python 2.6中使用模块CouchDB 0.8的方式")

couch = couchdb.Server(couch_server)

couch.resource.credentials =(USERNAME,PASSWORD)


thi*_*red 6

你也可以这样做:

db = couchdb.Database("http://your.url/yourdb")
db.resource.http.add_credentials(username, password)
Run Code Online (Sandbox Code Playgroud)

之后你的所有要求都应该有效.

  • 在资源中似乎不是.http属性,但有couch.resource.credentials.所以我做了couch.resource.credentials =(SERVER_USER,SERVER_PASSWD),对我有用. (4认同)

fvi*_*tor 5

Couch示例中的类不会将任何身份验证信息传递给数据库,因此它不允许特权操作并不奇怪.所以你唯一的选择是:

  • 完全禁用身份验证(如您所述)
  • 将用户名和密码作为URI的一部分传递
  • 将用户名和密码作为AuthorizationHTTP请求标头传递

如果要传递用户名和密码,则需要更改Couch类.Authorization由于Couch类使用httplib.HTTPConnection该类,因此发送HTTP请求标头更容易.您可以通过以下方式添加此类标题Accept:

headers = {
    "Accept": "application/json",
    "Authorization": "Basic " + 'username:password'.encode('base64')[:-1]}
Run Code Online (Sandbox Code Playgroud)

其他HTTP请求方法也是如此.

有关基本身份验证的文档如下:

http://books.couchdb.org/relax/reference/security