如何通过 Spring 安全和 MarkLogic 的 Java 客户端 API 验证用户?

How to authenticate a user via Spring Security and MarkLogic's Java Client API?

通过使用 Java 客户端 API (2.0.4) 登录对话框验证用户是否可以通过 MarkLogic 服务器(版本 7.0.4)进行身份验证的最佳做法是什么保护 Spring 网络应用程序?

使用我当前的方法(参见 gist 中的源代码)我正在实施 Spring 安全性的 AbstractUserDetailsAuthenticationProvider("classical" 使用 HTTP 会话的方法)创建一个 MarkLogic DatabaseClient 实例,然后执行一个简单的查询(testQueryMarkLogicConnections 中的 L.46)以查看是否可以检索结果。以此结果决定是否允许登录。

我想知道是否存在更优雅的解决方案,但在 MarkLogic 文档中找不到任何内容。

您可以利用这个机会检索您存储在数据库中的任何用户特定数据。

如果这不是我们想要的,也许根本不需要验证用户凭据?你可以让它在第一个必要的查询上懒惰地发生。在任何情况下,您都应该准备好处理任何地方的数据库错误。

如果您确实需要非惰性验证并且不需要任何数据,那么调用 suggest() 的费用可能比您希望的要高。如果是这样,您可能会考虑其他选择。对实现 noop XQuery 的 getErrorFormat ought to be fairly cheap. Opening a transaction and then rolling it back should be cheap too, but it requires the rest-writer or rest-admin role. If nothing else works you could write an extension 的调用,可能只是 ().