是否有可能在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