exist-db - 在 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 推荐的解决方案是什么?
提前谢谢了。
(两年前有人问过这个问题的变体,但没有得到任何解决方案。)
解决方案
为了使用来自 existsdb 的 REST-API,您只能使用 HTTP 基本身份验证对每个请求进行身份验证。在您引用的问题中也提到过。
如果您决定在您的应用程序中处理 AJAX 请求,您controller.xql
将需要:
- 将 AJAX 请求的路由添加到控制器
- 确保你调用
login:set-user
了用户会话 - 确保 AJAX 请求发送 cookie:例如,仅当为 true时,该
fetch
函数才会发送授权 cookie 。send-authorization
- 查看
output-method
andserialization
设置,因为您可能希望以 JSON 格式响应。关于这个的有用的博客文章
推荐阅读
- reactjs - 执行 npm start 后,localhost:3000/ 给出错误 431。IP 地址版本 (192.168..1.3:3000, 127.0.0.1:3000) 这会加载我的应用程序
- flutter - 在 Flutter TextField 中,当我将文本方向设置为 'Right to Left" 时,一些符号设置为行首
- android - 我在改造 REST api 调用中得到空体响应,但在邮递员中它工作正常
- javascript - 比较两个数组并过滤它们 javascript
- react-native - react-native createBottomTabNavigator 在Android上显示奇怪的标签栏
- android - 房间数据库中的多线程和同步
- python - Ghostscript 9.26 在 PowerPC (ppc64le) 架构上构建失败
- c# - 非泛型方法“ControllerBase.Ok()”不能与类型参数一起使用
- python - TypeError:如何修复仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但获得了“Index”实例
- python - Django - 电子邮件未发送,但其对象是在数据库中创建的