如何在node-oidc-provider中注销用户而不撤销授予

fhity93d  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(389)

我正在使用node-oidc-library创建一个oauth授权服务器。
一切似乎都工作正常,除了注销用户。
文档对如何注销用户有点沉默,但我认为它隐藏在FAQ中,其中解释了如何显示用户是否登录。
当用户单击授权服务器上的注销链接时,我将销毁会话:

const oidcContext = provider.app.createContext(req, res);
const session = await provider.Session.get(oidcContext);
await session.destroy();

这似乎是工作,但是,它的副作用也删除了用户给予的任何赠款。
因此,下次用户登录时,他必须再次通过同意屏幕。
我的问题是:是否有任何方法可以注销用户,但当他重新登录时,不需要他再次通过同意屏幕。

xqnpmsa8

xqnpmsa81#

经过进一步调查,发现授权ID存储在会话中。因此,当会话消失时,到授权的链接消失,并且在下次登录时再次询问用户的同意。
有一个解决方案:使用loadExistingGrant方法。There is a recipe explaining this function
此功能可用于从会话中获取用户和客户端并加载授权,从而跳过同意屏幕。

相关问题