除了@Konstantin Petrov所说的以外,我还提到了使用graphdbjs进行本地身份验证是一项仍在开发中的功能。您可以按照PR进行操作,还将添加示例。在此之前,可以通过发出登录请求并使用响应返回的授权令牌来解决此问题,以创建一个配置了授权标头和令牌的RDFRepositoryClient实例。下面是一个示例。
const {RepositoryClientConfig,RDFRepositoryClient} = require('graphdb').repository;
const {RDFMimeType} = require('graphdb').http;
const {SparqlJsonResultParser} = require('graphdb').parser;
const {GetQueryPayload,QueryType} = require('graphdb').query;
const axios = require('axios');
axios.post('http://localhost:7200/rest/login/admin',null,{
headers: {
'X-GraphDB-Password': 'root'
}
}).then(function(token) {
const readTimeout = 30000;
const writeTimeout = 30000;
const repositoryClientConfig = new RepositoryClientConfig(['http://localhost:7200/repositories/testrepo'],{
'authorization': token.headers.authorization
},'',readTimeout,writeTimeout);
const repositoryClient = new RDFRepositoryClient(repositoryClientConfig);
repositoryClient.registerParser(new SparqlJsonResultParser());
const payload = new GetQueryPayload()
.setQuery('select * where {?s ?p ?o}')
.setQueryType(QueryType.SELECT)
.setResponseType(RDFMimeType.SPARQL_RESULTS_JSON)
.setLimit(100);
return repositoryClient.query(payload);
})
.then(function(stream) {
// here is the query response stream
})
.catch(function(error) {
console.log('error',error);
});
,
启用安全性后,您必须通过传递JWT令牌来授权请求。
要接收JWT令牌,您可以以管理员身份发送请求。为了简单起见,所有示例都使用curl,但是想法是相同的。
POST 'http://localhost:7200/rest/login/admin' -H 'X-GraphDB-Password: root' --compressed
返回的标头包含JWT令牌:
-H 'Authorization: GDB eyJ1c2VybmFtZSI6ImFkbWluIiwiYXV0aGVudGljYXRlZEF0IjoxNTQwODA1MTQ2MTE2fQ==.K0mo2dSa/Gw+AR995qTrsA1zJGwlfOVEaIokZnhINh0='
您可以在下一个请求中使用令牌:
curl 'http://localhost:7200/rest/monitor/query/count' -H 'Authorization: GDB eyJ1c2VybmFtZSI6ImFkbWluIiwiYXV0aGVudGljYXRlZEF0IjoxNTQwODA1MTQ2MTE2fQ==.K0mo2dSa/Gw+AR995qTrsA1zJGwlfOVEaIokZnhINh0=' -H 'X-GraphDB-Repository: news' --compressed
本文链接:https://www.f2er.com/3151702.html