gpt4 book ai didi

authentication - 如何使用 pouchdb-authentication 检查用户名是否已存在?

转载 作者:行者123 更新时间:2023-12-03 03:11:21 26 4
gpt4 key购买 nike

上下文如下。

pouchdb-authentication API没有为此提供明确的方法。我考虑过使用db.getUser(username [, opts][, callback]) 。然而,该方法指出:

Note: Only server admins or the user themselves can fetch user data. Otherwise you will get a 404 not_found error.

我就是这么做的。

上下文

我想使用异步验证器来检查用户名是否存在,以便在用户单击“提交”之前告诉用户用户名是否存在。

我能想到的唯一其他选择是尝试注册以查明用户名是否已经存在,如下所示:

enter image description here

最佳答案

即使 PouchDB 没有这样的功能,您也可以使用 CouchDB 本身来实现它。以下是带有管理员凭据的 HTTP GET 请求,该请求返回所有用户:

$ curl -u admin:admin -X GET http://localhost:5984/_users/_all_docs
{"total_rows":4,"offset":0,"rows":[
{"id":"_design/_auth","key":"_design/_auth","value":{"rev":"1-75efcce1f083316d622d389f3f9813f7"}},
{"id":"org.couchdb.user:admin","key":"org.couchdb.user:admin","value":{"rev":"1-c363450b879aaf64823901816b5690db"}},
{"id":"org.couchdb.user:su","key":"org.couchdb.user:su","value":{"rev":"1-c468424e1e3cc6b76baca17a9a3b7a26"}},
{"id":"org.couchdb.user:suser","key":"org.couchdb.user:suser","value":{"rev":"1-1b0c0623016feb5a5d701b392b60ad84"}}
]}
<小时/>

例如,在服务器端使用 NodeJS/ExressJS,您可以向 CouchDB 发送带有管理员凭据的 HTTP GET 请求并获取所有用户的列表。 HTTP请求可以通过node-fetch来完成.

同时,NodeJS/ExpressJS 通过 HTTP POST 请求从前端接收 username 输入字段的值。在前端你可以使用browser fetch API .

然后您可以比较用户名输入字段中的值是否在用户中。根据比较,您可以将响应发送回前端/浏览器。获取 API 使用 Promise这使得所有 HTTP 通信都是异步的。

<小时/>

正如 @BernhardGschwantner 所指出的,最好首先从前端/浏览器中获取用户名,然后通过向 CouchDB 发出 HTTP 请求来查询该用户名以查看用户是否存在。

要向 CouchDB 发出 HTTP 请求,您可以发出 HEAD 请求,该请求预计比 GET 请求更快。如果用户存在,HTTP HEAD 请求将返回 200 OK 以及 ETag 内用户文档的修订,如下所示:

$ curl -I -X HEAD http://admin:****@192.168.1.106:5984/_users/org.couchdb.user:jan
HTTP/1.1 200 OK
X-CouchDB-Body-Time: 0
X-Couch-Request-ID: fbae21471c
Server: CouchDB/2.1.1 (Erlang OTP/18)
ETag: "3-f11b227a6e1236fa502af668fdbf326d"
Date: Fri, 30 Mar 2018 08:29:55 GMT
Content-Type: application/json
Content-Length: 263
Cache-Control: must-revalidate

如果用户不存在,HTTP HEAD 请求将返回 404 Object Not Found,不带任何 ETag,如下所示:

$ curl -I -X HEAD http://admin:****@192.168.1.106:5984/_users/org.couchdb.user:jerk
HTTP/1.1 404 Object Not Found
X-CouchDB-Body-Time: 0
X-Couch-Request-ID: ddccff4105
Server: CouchDB/2.1.1 (Erlang OTP/18)
Date: Fri, 30 Mar 2018 08:35:10 GMT
Content-Type: application/json
Content-Length: 41
Cache-Control: must-revalidate

关于authentication - 如何使用 pouchdb-authentication 检查用户名是否已存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49485379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com