我使用graphql-yoga创建我的graphql api,express-session配置是这样的:
<div [popover]="popTemplate" #pop="bs-popover" style="background-color:black" triggers="" (mouseenter)="pop.show()">This is a test</div>
<ng-template #popTemplate>
<div (mouseleave)="pop.hide()">
<p>Popover content.</p>
<button type="submit">Click me</button>
</div>
</ng-template>
完整的代码here。
然后,如果有任何用户想要登录,则按如下方式保存会话:
session({
store: new RedisStore({
client: redis as any,
prefix: redisSessionPrefix
}),
name: "qid",
secret: process.env.SESSION_SECRET as string,
resave: false,
saveUninitialized: false,
cookie: {
httpOnly: true,
secure: process.env.NODE_ENV === "production", // Only works with https
maxAge: 1000 * 60 * 60 * 24 * 7 // 7 days
}
})
session.userId = user.id;
来自一个称为TypeORM的ORM,仅通过电子邮件查找用户,我将该用户的ID放在user.id
中。完整的代码here。
然后,如果要检查用户是否已登录,请使用查询:
session.userId
之前的代码仅从TypeORM执行名为User的实体,该实体仅查找具有User.findOne({ where: { id: session.userId } })
的用户。但是session.userId
是不确定的...完整代码here
有人知道为什么吗?
这些是我用于开发的docker配置。
Dockerfile.dev Docker-compose.dev.yml
如果有人需要100%完整的代码,则here可以找到它,然后可以使用session.userId
在服务器文件夹中运行它。
答案 0 :(得分:1)
如果有人想知道,Twitter的Ben Awad帮助了我,解决方案是在graphql-playground request.credentials: include
中添加,就是这样:)