我有一个从eXist应用程序运行的公共网站。我现在正在开发一个界面,供登录用户通过HTML表单和AJAX编辑某些文档。我在 eXist 中设置了一个模块,通过 eXist REST 接口(即 http://www.example.com/exist/rest/db/myapp/api/myxquery.xql(接收 AJAX POST 请求。但是,此模块似乎不知道用户已经登录的事实!
如何让 REST 模块使用登录用户的会话/身份验证?
我是否需要将用户/密码存储在浏览器中,以便随每个 REST API 请求一起传递?
如果这不是在用户/密码下从浏览器传递数据的首选模型,eXist推荐的解决方案是什么?
提前非常感谢。
(两年前有人问过这个问题的变体,但没有得到任何解决方案。
为了从 existdb 使用 REST-API,您只能使用 HTTP 基本身份验证对每个请求进行身份验证。您提到的问题中也提到了。
如果决定在应用的controller.xql
中处理 AJAX 请求,则需要:
- 将 AJAX 请求的路由添加到控制器
- 确保呼叫
login:set-user
以便接听用户会话 - 确保 AJAX 请求发送 cookie: 例如,
fetch
函数将发送授权cookie 只有当send-authorization
是真的。 - 查看
output-method
和serialization
设置,因为您可能希望以 JSON 格式进行响应。 关于此的有用博客文章