res.session 未定义 graphql apollo-server-express
Posted
技术标签:
【中文标题】res.session 未定义 graphql apollo-server-express【英文标题】:res.session undefined graphql apollo-server-expres-s- 【发布时间】:2021-04-20 13:43:18 【问题描述】:我在会话方面遇到问题。出于某种原因,即使我使用的是 req.session 也是未定义的 会话中间件。我试图使用redis,但无法使连接正常工作。 奇怪的是,出于某种原因,cookie 在 graphql 游乐场中注册。所以原因一定是我传递请求的方式,可能。
所有类型都是正确的(打字稿不会对任何事情生气)。
这是来自 server.ts 的代码
import express, Request, Response from "express";
import routes from "./routes";
import cors from "cors";
import "reflect-metadata";
import createConnection from "typeorm";
import ApolloServer from "apollo-server-express";
import buildSchema from "type-graphql";
import session from "express-session";
createConnection()
.then(async (connection) =>
console.log("Conexão feita com sucesso");
const app = express();
app.set("trust proxy", 1);
app.use(cors());
app.use(
session(
name: "qid",
secret: "keyboard cat",
resave: false,
saveUninitialized: true,
cookie:
secure: false,
maxAge: 1000 * 60 * 60 * 24 * 365 * 10,
httpOnly: true,
,
)
);
const apolloServer = new ApolloServer(
schema: await buildSchema(
resolvers: [
],
validate: false, // Activate the validation with class-validation module.
),
context: (req: Request, res: Response): Context => ( req, res, session: req.session ),
playground:
settings:
'request.credentials': 'include',
,
,
);
apolloServer.applyMiddleware( app );
app.use(express.json());
app.use(routes);
app.listen(3333);
)
.catch((error) => console.error(error));
以及我在哪里使用会话。
@Mutation(() => UserResponse)
async login(
@Arg("info", () => UserLoginInputType) info: UserLoginInputType,
@Ctx()req, res, session: Context
): Promise<UserResponse>
const user = await User.findOneOrFail( where: email: info.email );
const valid = await argon2.verify(user.password, info.password);
if (valid)
req.session.userId = user.id;
return
user,
;
return
errors: [
field: "password",
message: "Incorrect password",
,
],
;
【问题讨论】:
【参考方案1】:我只是在传递 res 和 req 时忘记了大括号
【讨论】:
以上是关于res.session 未定义 graphql apollo-server-express的主要内容,如果未能解决你的问题,请参考以下文章