领域对象服务器:使用自定义身份验证成功登录后出现拒绝访问错误

Realm Object Server: Access Denied Error after successful login using Custom Authentication

我正在尝试为我公司的移动应用程序设置一个领域对象服务器。我必须使用自定义身份验证来允许用户访问数据库。

import { BasicServer } from 'realm-object-server'
import * as path from 'path'
import { AuthProvider } from './lib/auth'

const server = new BasicServer()

server.start({
  dataPath: path.join(__dirname, '../data'),
  address: '192.168.0.24',
  authProviders: [new AuthProvider()]
 })
 .then(() => {
    console.log(`Realm Object Server was started on ${server.address}`)
 })
 .catch(err => {
    console.error(`Error starting Realm Object Server: ${err.message}`)
 })

这是我必须申请的自定义授权。身份验证将由另一台后端服务器完成。

import { post } from 'superagent'
import { auth, User, errors } from 'realm-object-server'
import { pick } from 'lodash';

export class AuthProvider extends auth.AuthProvider {

  name = 'authprovider'

  authenticateOrCreateUser(body: any): Promise<User> {
   return post('https://XYZ/signin')
  .send({
    'email': body.user_info.email,
    'password': body.user_info.password
  })
  .then((successResponseJSON: any) => {
    return this.service.createOrUpdateUser(
      successResponseJSON.body.id,
      this.name, // this is the name of the provider,
      false, // this is if the user should or should not be an admin
      pick(successResponseJSON.body, ['id', 'email'])
    )
  })
  .catch(err => {
    throw new errors.realm.InvalidCredentials({ detail: err })
  })
 }
}

我已将自定义身份验证代码添加到领域提供的示例中,以将数据添加到领域服务器。在这里,我要求使用 'authprovider'

对用户进行身份验证
var URL = "192.168.0.24:9080"

Realm.Sync.User.registerWithProvider(`http://${URL}`, {
provider: 'authprovider',
providerToken: null,
userInfo: {
  email: username,
  password: password
}
 }).then(user => {
console.log('user', user, user.identity)
Realm.open({
  sync: {
    url: `realm://${URL}/abc`,
    user: user
  },
  schema: [TickerSchema],
})

即使用户已成功通过身份验证,我仍收到拒绝访问错误。我无法理解为什么。

user User {} 9ae6033cd9b55e3aca62a291af8726ea
Unhandled session token refresh error { Error: The path is invalid or current user has no access.
at new AuthError (/home/sukumar/code_snippets/realm-test/node_modules/realm/lib/errors.js:22:25)
at performFetch.then.then (/home/sukumar/code_snippets/realm-test/node_modules/realm/lib/user-methods.js:105:29)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
name: 'AuthError',
message: 'The path is invalid or current user has no access.',
stack: 'Error: The path is invalid or current user has no access.\n    at new AuthError (/home/sukumar/code_snippets/realm-test/node_modules/realm/lib/errors.js:22:25)\n    at performFetch.then.then (/home/sukumar/code_snippets/realm-test/node_modules/realm/lib/user-methods.js:105:29)\n    at <anonymous>\n    at process._tickCallback (internal/process/next_tick.js:188:7)',
type: 'https://realm.io/docs/object-server/problems/access-denied',
title: 'The path is invalid or current user has no access.',
status: 403,
code: 614 }

领域 url 不正确:它应该是 realm://${URL}/~/abc 而不是 realm://${URL}/abc