利用 couchdb 实现用户认证

发布于 2021-05-16 19:49:14 字数 1565 浏览 1486 评论 0

token 的生成过程可分成两大步:用户登录和生成 token。其中用户登录的检验依靠 couchdb。另,使用 couchdb 管理角色,完成授权。

用户注册

couchdb 内置了一个 _users 数据库存放所有用户,创建用户的服务如下,其中 org.couchdb.user 是 couchdb 规定的前缀。

curl -X PUT https://dev.imaicloud.com/couchdb/_users/org.couchdb.user:jan \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d '{"name": "jan", "password": "apple", "roles": [], "type": "user"}'

用户登录

couchdb 支持多种认证方式,这里使用它的 cookie 认证。

curl -vX POST https://dev.imaicloud.com/couchdb/_session \
       -H 'Content-Type:application/x-www-form-urlencoded' \
       -d 'name=anna&password=secret'

登录后 couchdb 会在用户 cookie 中写入会话标识(类似 jsessionid)。登录响应相关内容:

Set-Cookie: AuthSession=amFuOjU3ODY0NzU1Otyly0ka4T1Y5FGB0Q8yfZGfmvbq;
{"ok":true,"name":"root","roles":["_admin"]}

取用户信息

couchdb 已经在用户浏览器中写入了会话标识,就可以发请求取用户信息了:

curl -vX GET https://dev.imaicloud.com/couchdb/_session \
      --cookie AuthSession=amFuOjU3ODY0NzU1Otyly0ka4T1Y5FGB0Q8yfZGfmvbq

响应:

{ok: true,userCtx: {name: "anna",roles: ["_admin"]}, \
info: {authentication_db: "_users",authentication_handlers: [\
"oauth","cookie","default"],authenticated: "cookie" } }

上述响应中的 userCtx(User Context Object)就是用户上下文信息。

生成token

将 userCtx 发给后台的 token 生成程序来生成token。将 token 写入 cookie 中: imaicloud_expires=2147483647;
imaicloud_md5=TX7ZNGJJNqtHviTmMr-DDQ; imaicloud_payload=payload;
imaicloud_role=_admin,compdev,appdev

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文