在 eXist-db 中为 REST API 使用经过身份验证的 session/user
using authenticated session/user for REST API in eXist-db
我有一个来自 eXist 应用程序的 public 网站 运行。我现在正在开发一个界面,供登录用户通过 HTML 表单和 AJAX 编辑某些文档。我在 eXist 中设置了一个模块以通过 eXist REST 接口(即 http://www.example.com/exist/rest/db/myapp/api/myxquery.xql)接收 AJAX POST 请求。然而这个模块似乎没有意识到用户已经登录的事实!
如何让 REST 模块使用登录用户的 session/authentication?
我是否需要在浏览器中存储 user/password 以随每个 REST API 请求一起传递?
如果这不是在 user/password 下从浏览器传递数据的首选模型,eXist 推荐的解决方案是什么?
非常感谢。
(有人问了这个问题的变体 two years ago 但没有收到任何答案。)
为了使用来自 existdb 的 REST-API,您只能使用 HTTP 基本身份验证对每个请求进行身份验证。在你提到的问题中也提到了。
如果您决定在应用的 controller.xql
中处理 AJAX 请求,您将需要:
- 将 AJAX 请求的路由添加到控制器
- 确保您调用
login:set-user
来获取用户会话
- 确保 AJAX 请求发送了 cookie:
例如,
fetch
函数将发送授权 cookie
仅当 send-authorization
为真时。
- 查看
output-method
和 serialization
设置,因为您可能希望以 JSON 格式回复。 useful blog post about this
我有一个来自 eXist 应用程序的 public 网站 运行。我现在正在开发一个界面,供登录用户通过 HTML 表单和 AJAX 编辑某些文档。我在 eXist 中设置了一个模块以通过 eXist REST 接口(即 http://www.example.com/exist/rest/db/myapp/api/myxquery.xql)接收 AJAX POST 请求。然而这个模块似乎没有意识到用户已经登录的事实!
如何让 REST 模块使用登录用户的 session/authentication?
我是否需要在浏览器中存储 user/password 以随每个 REST API 请求一起传递?
如果这不是在 user/password 下从浏览器传递数据的首选模型,eXist 推荐的解决方案是什么?
非常感谢。
(有人问了这个问题的变体 two years ago 但没有收到任何答案。)
为了使用来自 existdb 的 REST-API,您只能使用 HTTP 基本身份验证对每个请求进行身份验证。在你提到的问题中也提到了。
如果您决定在应用的 controller.xql
中处理 AJAX 请求,您将需要:
- 将 AJAX 请求的路由添加到控制器
- 确保您调用
login:set-user
来获取用户会话 - 确保 AJAX 请求发送了 cookie:
例如,
fetch
函数将发送授权 cookie 仅当send-authorization
为真时。 - 查看
output-method
和serialization
设置,因为您可能希望以 JSON 格式回复。 useful blog post about this