2016-07-08 3 views
0

사용자를 인증하기위한 올바른 지점은 무엇입니까?릴레이에서 인증하는 방법

예를 들어 릴레이 스타터 키트로갑니다.

이 (내가 인수 ID를 추가 한) 다음 데이터베이스에

var queryType = new GraphQLObjectType({ 
    name: 'Query', 
    fields:() => ({ 
    node: nodeField, 
    // Add your own root fields here 
    viewer: { 
     args: { 
     id: { 
      type: GraphQLString 
     }, 
     }, 
     type: userType, 
     resolve: (_, args) => getViewer(args.id), 
    }, 
    }), 
}); 

지금

getViewer: (id) => id === viewer.id ? viewer : null, 

이 떨어져 떨어지고는이 시점 식으로 뭔가를 조회 할 점처럼 보일 것 , 이드에게 요청할 곳은 어디일까요? 나는 길을 택할 것이다.

export default class extends Relay.Route { 
    static queries = { 
    viewer:() => Relay.QL` 
     query { 
     viewer(id:"1") 
     } 
    `, 
    }; 
    static routeName = 'AppHomeRoute'; 
} 

이것은 효과가 없다.

답변

0

먼저 인증 미들웨어를 서버 (예 : http://passportjs.org/)에 놓아야합니다. 그런 다음 auth 정보를 graphql 미들웨어에 전달해야합니다 (여기에서 수행하는 방법은 https://github.com/graphql/express-graphql#advanced-options입니다). 마침내 해당 정보에 액세스 할 수 있습니다 resolve(parentValue, args, -->session) 함수의 세 번째 인수를 사용합니다. 실제 인증 엔드 포인트는 다음과 같습니다. https://github.com/igorsvee/react-relay-example/blob/master/server/routes.js#L29-L51