如何在不撤销node-oid -provider中的授权的情况下注销用户



我正在使用node-oidc-library创建一个oauth授权服务器。

一切似乎都很好,除了注销用户。

文档对如何注销用户有点沉默,但我认为它隐藏在FAQ中,其中解释了如何显示用户是否登录。

当用户单击授权服务器上的注销链接时,我销毁会话:

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

这似乎是有效的,然而,它有副作用,也删除了用户所给予的任何授权。

所以下次用户登录时,他必须再次通过同意屏幕。

我的问题是:是否有办法注销用户,而不需要他再次登录时通过同意屏幕。

进一步调查后发现,授权id存储在会话中。因此,当会话消失时,到授权的链接也会消失,并且在下次登录时再次询问用户是否同意。

有一个解决方法:使用loadExistingGrant方法。有一个说明这个函数的配方。

此函数可用于从会话中获取用户和客户端并加载授权,从而跳过同意屏幕。

相关内容

最新更新