首页 > 解决方案 > 在 eXist-db 中为 REST API 使用经过身份验证的会话/用户

问题描述

我有一个从 eXist 应用程序运行的公共网站。我现在正在开发一个界面,供登录用户通过 HTML 表单和 AJAX 编辑某些文档。我在 eXist 中设置了一个模块来通过 eXist REST 接口(即http://www.example.com/exist/rest/db/myapp/api/myxquery.xql)接收 AJAX POST 请求。然而,这个模块似乎并没有意识到用户已经登录的事实!

如何让 REST 模块使用登录用户的会话/身份验证?

我是否需要将用户/密码存储在浏览器中以通过每个 REST API 请求传递?

如果这不是在用户/密码下从浏览器传递数据的首选模型,那么 eXist 推荐的解决方案是什么?

提前谢谢了。

(两年前有人问过这个问题的变体,但没有得到任何解决方案。)

标签: exist-db

解决方案


为了使用来自 existsdb 的 REST-API,您只能使用 HTTP 基本身份验证对每个请求进行身份验证。在您引用的问题中也提到过。

如果您决定在您的应用程序中处理 AJAX 请求,您controller.xql将需要:

  • 将 AJAX 请求的路由添加到控制器
  • 确保你调用login:set-user了用户会话
  • 确保 AJAX 请求发送 cookie:例如,仅当为 true时,该fetch函数才会发送授权 cookie 。send-authorization
  • 查看output-methodandserialization设置,因为您可能希望以 JSON 格式响应。关于这个的有用的博客文章

推荐阅读