通过使用Java Client API(2.0.4)获取用于保护Spring Web应用程序的登录对话框,验证用户是否可以通过MarkLogic服务器(版本7.0.4)进行身份验证的最佳做法是什么?
使用我当前的方法(参见gist中的源代码)我正在实现Spring Security的AbstractUserDetailsAuthenticationProvider
("经典" HTTP会话方法),我在其中创建了MarkLogic DatabaseClient
实例,之后执行简单查询(testQuery
,在MarkLogicConnections
中的L. 46),以查看是否可以检索到结果。从这个结果决定是否授予登录。
我想知道是否确实存在更优雅的解决方案,但无法在MarkLogic文档中找到任何内容。
答案 0 :(得分:2)
您可以利用该机会检索您在数据库中存储的任何特定于用户的数据。
如果这不合适,可能根本不需要验证用户凭据吗?你可以在第一个必要的查询中懒散地发生这种情况。无论如何,你应该准备在任何地方处理数据库错误。
如果您确实需要非延迟验证且不想要任何数据,那么拨打suggest()
的电话可能比您想要的更贵。如果是这样,您可以考虑其他选择。拨打getErrorFormat
应该相当便宜。打开一个事务然后回滚它应该也很便宜,但它需要rest-writer
或rest-admin
角色。如果没有其他工作可以,你可以写一个实现noop XQuery的extension,可能只是()
。