本文介绍了如何使用RxDB处理JWT身份验证?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个本地RxDB数据库,我想用CouchDB连接它。除了身份验证之外,一切似乎都很正常。我不知道如何以不同方式添加它,然后在数据库url中插入凭据:
database.tasks.sync({
remote: `http://${username}:${pass}@127.0.0.1:5984/tododb`,
});
我想使用JWT身份验证,但找不到如何向同步请求添加令牌。我只找到了PouchDB(pouchdb身份验证插件)的一些解决方案,但无法使其与RxDB一起工作。
推荐答案
RxDB与PouchDB紧密耦合,并在幕后使用其同步实现。据我所知,向远程PouchDB实例添加自定义头(这是在sync
中将url作为remote
参数传递时为您创建的)的唯一方法是intercept the HTTP request:
var db = new PouchDB('http://example.com/dbname', {
fetch: function (url, opts) {
opts.headers.set('X-Some-Special-Header', 'foo');
return PouchDB.fetch(url, opts);
}
});
PouchDB replication documentation(Sync)还声明:
幸运的是,RxDB的Rx.Collection.sync
不仅接受服务器url作为remote
参数,还接受另一个RxCollection或PouchDB实例。
RxDB甚至重新导出内部使用的PouchDB模块,因此您不必将PouchDB作为直接依赖项安装。
import { ..., PouchDB } from 'rxdb';
// ...
const remotePouch = new PouchDB('http://27.0.0.1:5984/tododb', {
fetch: function (url, opts) {
opts.headers.set('Authorization', `Bearer ${getYourJWTToken()}`)
return PouchDB.fetch(url, opts);
}
})
database.tasks.sync({
remote: remotePouch,
});
这篇关于如何使用RxDB处理JWT身份验证?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!