如何通过Spring Security和MarkLogic对用户进行身份验证';什么是Java客户端API?
通过使用Java客户机API(2.0.4)对保护SpringWeb应用程序的登录对话框验证用户是否可以通过MarkLogic服务器(7.0.4版)进行身份验证的最佳实践是什么 使用我当前的方法(请参阅中的源代码),我从Spring Security实现了一个如何通过Spring Security和MarkLogic对用户进行身份验证';什么是Java客户端API?,java,spring,spring-mvc,spring-security,marklogic,Java,Spring,Spring Mvc,Spring Security,Marklogic,通过使用Java客户机API(2.0.4)对保护SpringWeb应用程序的登录对话框验证用户是否可以通过MarkLogic服务器(7.0.4版)进行身份验证的最佳实践是什么 使用我当前的方法(请参阅中的源代码),我从Spring Security实现了一个AbstractUserDetailsAuthenticationProvider(HTTP会话的“经典”方法),在这里我创建了一个MarkLogicDatabaseClient实例,然后执行一个简单的查询执行(testQuery,在Mark
AbstractUserDetailsAuthenticationProvider
(HTTP会话的“经典”方法),在这里我创建了一个MarkLogicDatabaseClient
实例,然后执行一个简单的查询执行(testQuery
,在MarkLogicConnections
中的L.46)以查看是否可以检索结果。根据此结果决定是否授予登录
我想知道是否存在更优雅的解决方案,但在MarkLogic文档中找不到任何内容。您可以利用这个机会检索存储在数据库中的任何特定于用户的数据 如果不希望这样做,那么可能根本不需要验证用户凭据?您可以在第一次必要的查询时让这种情况缓慢发生。并且您应该准备好在任何情况下处理任何地方的数据库错误
如果您确实需要非惰性验证并且不需要任何数据,那么调用
suggest()可能比你想要的要贵。如果是这样,你可能会考虑其他的选择。一个调用应该相当便宜。打开一个事务,然后滚回它也应该是便宜的,但是它需要<代码> ReadReads< /C>或<代码> Read-admin < /Case>角色。如果没有其他的工作,你可以写一个实现NOOP XQuery,PROB的AN。非常感谢@mblakele的回答,延迟验证不是一个选项(因为这是一个登录掩码,直接决定是否允许用户继续)。因为这些“业务”(只读)用户既没有rest编写器
也没有rest管理员
角色,我可能会坚持使用一个简单的建议或搜索查询来决定是否允许她继续。文档检索可能比搜索或建议便宜。您可以利用这个机会查找类似“/usr/”+userId+“/data.xml”的内容也许有一天你会想要保留一些用户喜好的东西,但是同时,如果不需要一个不存在的文档,那就相当便宜了。这是一个很好的观点,但我仍然认为这是一个“微”优化(因为如果一个Intranet场景的登录需要10或100Ms,那就没什么大不了的)。。我真的希望有一种方法可以通过Java或REST API对用户进行身份验证。似乎有一些有用的xdmp
函数,不过我可能会通过REST扩展来公开这些函数。。。