2016-07-08 8 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)関数の3番目の引数を使用します。実際の認証エンドポイントの外観は次のとおりですhttps://github.com/igorsvee/react-relay-example/blob/master/server/routes.js#L29-L51

関連する問題