我当前正在尝试为当前项目设置oauth服务。作为所有这些的新手,我已经阅读了许多关于该主题的文章,但是我仍然缺少一些内容。
我的环境是:
在我的nodejs服务器上,我正在使用以下模块:
解决方案的不同部分都在起作用:我可以创建新用户,创建新会话,并在express-mysql-session数据库中查看其内容。
但是我对以下内容感到困惑:
当我的Web客户端尝试访问受保护的路由时,请求中似乎没有任何cookie。超级代理默认不会发送我的护照cookie吗?我读过某个地方,在单页应用程序中,jwt可能更合适,这与这个问题有关吗?
User.findById
调用)?如果您必须“手动”执行操作,这意味着您必须使用不同于该模块使用的连接来访问express-mysql-session db?
要注销,req.logout()是否足以确保完全从会话数据库中删除会话?
答案 0 :(得分:0)
我到目前为止发现的答案:
import winsound
songs = ['magenta riddim.wav', 'rescue me.wav']
num = 0
winsound.PlaySound(songs[num], winsound.SND_ASYNC | winsound.SND_ALIAS )
while True:
Usr = input("")
if Usr == ">":
winsound.PlaySound(songs[num+1], winsound.SND_ASYNC | winsound.SND_ALIAS )
num += 1
elif Usr == "<" and num != 0:
winsound.PlaySound(songs[num-1], winsound.SND_ASYNC | winsound.SND_ALIAS )
num -= 1
elif Usr == 'stop':
winsound.PlaySound(None, winsound.SND_PURGE)
else:
print('Error!')
方法添加到超级代理,才能使其发送身份验证cookie:withCredential
在CORS方面,在服务器上,如果使用“ cors” npm模块,则需要“ credentials”选项,例如:
res = await superagent
.get(url)
.withCredentials()
.send();
这些模块会自动检索所有会话信息。但是,许多示例显示此调用返回到用户数据库以获取更多信息(权限,其他信息)。目标是避免在两个位置(会话数据库和用户配置文件数据库)具有相同的信息,并且避免这些信息不同步(在关闭帐户等情况下……)
app.use(cors({
origin: ['http://localhost:3003'],
methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
credentials: true,
}));
断开会话连接,但是会话信息仍保留在数据库中。
以下问题使我步入正轨:how to delete cookie on logout in express + passport js?。您需要使用req.logout,res.session.destroy,并在使用res.clearCookie时删除客户端cookie:
req.logout()
会话已断开连接,数据库已清理,cookie消失了。