1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[532],{65045:function(i,s,h){(window.__NEXT_P=window.__NEXT_P||[]).push(["/graphql-js/authentication-and-express-middleware",function(){return h(33698)}])},33698:function(i,s,h){"use strict";h.r(s),h.d(s,{useTOC:function(){return t}});var e=h(52676),l=h(92937),n=h(45043),r=h(79428),a=h(41751);function t(i){return[]}s.default=(0,l.c)(function(i){let s={a:"a",code:"code",p:"p",pre:"pre",span:"span",...(0,r.a)(),...i.components};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsxs)(s.p,{children:["Itâs simple to use any Express middleware in conjunction with ",(0,e.jsx)(s.code,{children:"graphql-http"}),". In particular, this is a great pattern for handling authentication."]}),"\n",(0,e.jsxs)(s.p,{children:["To use middleware with a GraphQL resolver, just use the middleware like you would with a normal Express app. The ",(0,e.jsx)(s.code,{children:"request"})," object is then available as the second argument in any resolver."]}),"\n",(0,e.jsxs)(s.p,{children:["For example, letâs say we wanted our server to log the IP address of every request, and we also want to write an API that returns the IP address of the caller. We can do the former with middleware, and the latter by accessing the ",(0,e.jsx)(s.code,{children:"request"})," object in a resolver. Hereâs server code that implements this:"]}),"\n",(0,e.jsx)(s.pre,{icon:a.Dr,tabIndex:"0","data-language":"js","data-word-wrap":"",children:(0,e.jsxs)(s.code,{children:[(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#C2F653"},children:"import"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#E1E4E8"},children:" express"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#C2F653"},children:" from"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:' "'}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#609A06","--shiki-dark":"#9ECBFF"},children:"express"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:'"'}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:";"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#C2F653"},children:"import"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:" {"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#E1E4E8"},children:" createHandler"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:" }"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#C2F653"},children:" from"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:' "'}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#609A06","--shiki-dark":"#9ECBFF"},children:"graphql-http/lib/use/express"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:'"'}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:";"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#C2F653"},children:"import"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:" {"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#E1E4E8"},children:" buildSchema"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:" }"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#C2F653"},children:" from"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:' "'}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#609A06","--shiki-dark":"#9ECBFF"},children:"graphql"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:'"'}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:";"})]}),"\n",(0,e.jsx)(s.span,{children:" "}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#F97583"},children:"const"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#79B8FF"},children:" schema"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#ECFAD1"},children:" ="}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#0E0F0B","--shiki-dark":"#F3F4F0"},children:" buildSchema"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:"("}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:"`"})]}),"\n",(0,e.jsx)(s.span,{children:(0,e.jsx)(s.span,{style:{"--shiki-light":"#609A06","--shiki-dark":"#9ECBFF"},children:" type Query {"})}),"\n",(0,e.jsx)(s.span,{children:(0,e.jsx)(s.span,{style:{"--shiki-light":"#609A06","--shiki-dark":"#9ECBFF"},children:" ip: String"})}),"\n",(0,e.jsx)(s.span,{children:(0,e.jsx)(s.span,{style:{"--shiki-light":"#609A06","--shiki-dark":"#9ECBFF"},children:" }"})}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:"`"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:")"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:";"})]}),"\n",(0,e.jsx)(s.span,{children:" "}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#F97583"},children:"function"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#0E0F0B","--shiki-dark":"#F3F4F0"},children:" loggingMiddleware"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"("}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#DBF6A2"},children:"req"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:","}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#DBF6A2"},children:" res"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:","}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#DBF6A2"},children:" next"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:")"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:" {"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#E1E4E8"},children:" console"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"."}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#0E0F0B","--shiki-dark":"#F3F4F0"},children:"log"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:"("}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:'"'}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#609A06","--shiki-dark":"#9ECBFF"},children:"ip:"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:'"'}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:","}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#E1E4E8"},children:" req"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"."}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#E1E4E8"},children:"ip"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:")"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:";"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#0E0F0B","--shiki-dark":"#F3F4F0"},children:" next"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"}
1,children:"()"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:";"})]}),"\n",(0,e.jsx)(s.span,{children:(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"}"})}),"\n",(0,e.jsx)(s.span,{children:" "}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#F97583"},children:"const"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#79B8FF"},children:" root"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#ECFAD1"},children:" ="}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:" {"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#0E0F0B","--shiki-dark":"#F3F4F0"},children:" ip"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"("}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#DBF6A2"},children:"args"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:","}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#DBF6A2"},children:" context"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:")"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:" {"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#C2F653"},children:" return"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#E1E4E8"},children:" context"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"."}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#E1E4E8"},children:"ip"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:";"})]}),"\n",(0,e.jsx)(s.span,{children:(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:" },"})}),"\n",(0,e.jsx)(s.span,{children:(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"};"})}),"\n",(0,e.jsx)(s.span,{children:" "}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#F97583"},children:"const"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#79B8FF"},children:" app"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#ECFAD1"},children:" ="}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#0E0F0B","--shiki-dark":"#F3F4F0"},children:" express"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:"()"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:";"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#E1E4E8"},children:"app"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"."}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#0E0F0B","--shiki-dark":"#F3F4F0"},children:"use"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:"("}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#E1E4E8"},children:"loggingMiddleware"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:")"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:";"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#E1E4E8"},children:"app"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"."}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#0E0F0B","--shiki-dark":"#F3F4F0"},children:"all"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:"("})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:' "'}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#609A06","--shiki-dark":"#9ECBFF"},children:"/graphql"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:'"'}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:","})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#0E0F0B","--shiki-dark":"#F3F4F0"},children:" createHandler"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:"("}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"{"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#E1E4E8"},children:" schema"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:","})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:" rootValue"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:":"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#E1E4E8"},children:" root"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:","})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#0E0F0B","--shiki-dark":"#F3F4F0"},children:" context"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:":"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:" ("}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#DBF6A2"},children:"req"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:")"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#E10198","--shiki-dark":"#F97583"},children:" =>"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:" ("}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"{"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:" ip"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:":"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#E1E4E8"},children:" req"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"."}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#E1E4E8"},children:"raw"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"."}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#E1E4E8"},children:"ip"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:","})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:" }"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:")"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:","})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:" }"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:")"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:")"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:";"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#E1E4E8"},children:"app"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"."}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#0E0F0B","--shiki-dark":"#F3F4F0"},children:"listen"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:"("}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#F3F4F0"},children:"4000"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:")"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:";"})]}),"\n",(0,e.jsxs)(s.span,{children:[(0,e.jsx)(s.span,{style:{"--shiki-light":"#1976D2","--shiki-dark":"#E1E4E8"},children:"console"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:"."}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#0E0F0B","--shiki-dark":"#F3F4F0"},children:"log"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:"("}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:'"'}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#609A06","--shiki-dark":"#9ECBFF"}
1,children:"Running a GraphQL API server at localhost:4000/graphql"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#9ECBFF"},children:'"'}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#24292EFF","--shiki-dark":"#CFD3C5"},children:")"}),(0,e.jsx)(s.span,{style:{"--shiki-light":"#6E7557","--shiki-dark":"#6E7557"},children:";"})]})]})}),"\n",(0,e.jsxs)(s.p,{children:["In a REST API, authentication is often handled with a header, that contains an auth token which proves what user is making this request. Express middleware processes these headers and puts authentication data on the Express ",(0,e.jsx)(s.code,{children:"request"})," object. Some middleware modules that handle authentication like this are ",(0,e.jsx)(s.a,{href:"http://passportjs.org/",children:"Passport"}),", ",(0,e.jsx)(s.a,{href:"https://github.com/auth0/express-jwt",children:"express-jwt"}),", and ",(0,e.jsx)(s.a,{href:"https://github.com/expressjs/session",children:"express-session"}),". Each of these modules works with ",(0,e.jsx)(s.code,{children:"graphql-http"}),"."]}),"\n",(0,e.jsxs)(s.p,{children:["If you arenât familiar with any of these authentication mechanisms, we recommend using ",(0,e.jsx)(s.code,{children:"express-jwt"})," because itâs simple without sacrificing any future flexibility."]}),"\n",(0,e.jsx)(s.p,{children:"If youâve read through the docs linearly to get to this point, congratulations! You now know everything you need to build a practical GraphQL API server."})]})},"/graphql-js/authentication-and-express-middleware",{filePath:"src/pages/graphql-js/authentication-and-express-middleware.mdx",timestamp:1789481543e3,pageMap:n.v,frontMatter:{title:"Authentication and Express Middleware",sidebarTitle:"Authentication & Middleware"},title:"Authentication and Express Middleware"},"undefined"==typeof RemoteContent?t:RemoteContent.useTOC)}},function(i){i.O(0,[3556,5043,2888,9774,179],function(){return i(i.s=65045)}),_N_E=i.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.