Kimlik Doğrulama | GraphQL

Mehmet Ali Peker
Sorcial Development
2 min readDec 31, 2017
Photo by Pankaj Patel on Unsplash

Herhangi bir Express ara katmanını (middleware) express-graphql ile birlikte kullanmanız basittir. Özellikle, bu kimlik doğrulamak için harika bir desendir (pattern).

Middleware’i bir GraphQL çözümleyici (resolver) ile kullanmak için normal bir Express uygulamasında olduğu gibi middleware kullanın. İstek (request) nesnesi herhangi bir çözümleyicide (resolver) ikinci argüman olarak daha sonra kullanılabilir.

Örneğin, sunucumuzun her isteğin IP adresini kaydetmesini istedik ve arayan kişinin IP adresini döndüren bir API yazmak istiyoruz. Ortamı ara katmanla, ikinci katmanı ise bir çözümleyicide istek nesnesine (request object) erişerek yapabilirsiniz. İşte bunu sağlayan sunucu kodu:

var express = require('express');
var graphqlHTTP = require('express-graphql');
var { buildSchema } = require('graphql');

var schema = buildSchema(`
type Query {
ip: String
}
`);

function loggingMiddleware(req, res, next) {
console.log('ip:', req.ip);
next();
}

var root = {
ip: function (args, request) {
return request.ip;
}
};

var app = express();
app.use(loggingMiddleware);
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
app.listen(4000);
console.log('Running a GraphQL API server at localhost:4000/graphql');

Bir REST API da, kimlik doğrulama genellikle hangi kullanıcının bu isteği yaptığını kanıtlayan bir kimlik doğrulama etiketi içeren başlık (header) bilgisi ile ele alınır. Express middleware bu başlıkları işler ve kimlik doğrulama veriler Express istek (request) nesnesine yerleştirir. Bunun gibi kimlik doğrulamasını gerçekleştiren bazı middleware modülleri Passport, express-jwt ve express-session’dur. Bu modüllerin her biri ile express-graphql çalışır.

Kimlik doğrulama mekanizmalarından herhangi biriyle tanışık değilseniz, express-jwt kullanmanızı öneririz çünkü gelecekteki herhangi bir esneklikten ödün vermeden basittir.

--

--

Mehmet Ali Peker
Sorcial Development

Co-Founder at T-Fashion / Fashion AI & Trend Forecasting / Web3 / NFTs