是否有可能在BaseX中创建一个公共REST API,以便客户端根本不需要验证?BaseX:没有验证的公共REST API
此公共API应该是只读的。我已经完成的工作是创建一个名为HTTPGuest
的用户,该用户可以读取某些数据库。
然后我试了basexhttp -UHTTPGuest
。但API仍然希望通过基本认证获得凭证。
是否有可能在BaseX中创建一个公共REST API,以便客户端根本不需要验证?BaseX:没有验证的公共REST API
此公共API应该是只读的。我已经完成的工作是创建一个名为HTTPGuest
的用户,该用户可以读取某些数据库。
然后我试了basexhttp -UHTTPGuest
。但API仍然希望通过基本认证获得凭证。
您可以通过修改web.xml
文件,它通常位于~/BaseXWeb/WEB-INF/web.xml
提供默认凭据。该文件包含以下块>
<!-- REST Service (can be deactivated by removing this entry) -->
<servlet>
<servlet-name>REST</servlet-name>
<servlet-class>org.basex.http.rest.RESTServlet</servlet-class>
<!-- service-specific credentials
<init-param>
<param-name>org.basex.user</param-name>
<param-value/>
</init-param>
<init-param>
<param-name>org.basex.password</param-name>
<param-value/>
</init-param>
-->
</servlet>
<servlet-mapping>
<servlet-name>REST</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
这里,取消对<init-param/>
子树和用户/密码组合添加到<param-value/>
元素,例如
<!-- REST Service (can be deactivated by removing this entry) -->
<servlet>
<servlet-name>REST</servlet-name>
<servlet-class>org.basex.http.rest.RESTServlet</servlet-class>
<init-param>
<param-name>org.basex.user</param-name>
<param-value>HTTPGuest</param-value>
</init-param>
<init-param>
<param-name>org.basex.password</param-name>
<param-value>super-secret-passphrase</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>REST</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
一个小的增加:使用BaseX 8.6,不需要再指定密码(因为无论如何它都是服务器实例已知的)。 –
即使没有设置'org.basex.password',也可以很好地工作。谢谢你们俩! – Seb3736
如果使用BaseX 8.6及更高版本,它实际上应该就像你一样,足以在命令行上指定用户。 –
是的,在答案发布之后,我意识到自己。在我的情况下,问题实际上是另一个:当我从不是'basexhttp'的父目录的工作目录执行'basexhttp'时,API请求基本认证。我现在有一个包装脚本,它基本上只是'cd /.../basex/bin; 。/ basexhttp'。但是Jens Erat的答案对我来说仍然很有用,因为现在我不必一直使用'-U'选项。 – Seb3736