2017-12-08 17 views
0

회사의 모바일 응용 프로그램 용 Realm Object Server를 설정하려고합니다. 사용자가 데이터베이스에 액세스 할 수있게하려면 사용자 지정 인증을 사용해야합니다.Realm Object Server : 사용자 정의 인증을 사용하여 로그인 성공 후 액세스가 거부 됨 오류

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 }) 
    }) 
} 
} 

영역 서버에서 데이터를 추가하기 위해 영역에서 제공하는 예제에 대한 사용자 정의 인증 코드가 추가되었습니다. 여기에 사용자는 사용자가 성공적으로 인증하더라도

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], 
}) 

, 나는 액세스 거부 오류를 얻고있다 '으로 AuthProvider'를 사용하여 인증 할 것을 요구하고있다. 나는 이유를 이해할 수 없다.

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 } 

답변

1

영역의 URL이 잘못했다 : 대신 realm://${URL}/abc

realm://${URL}/~/abc를 있었어야