我正在使用node-oidc-library
创建一个oauth授权服务器。
一切似乎都工作正常,除了注销用户。
文档对如何注销用户有点沉默,但我认为它隐藏在FAQ中,其中解释了如何显示用户是否登录。
当用户单击授权服务器上的注销链接时,我将销毁会话:
const oidcContext = provider.app.createContext(req, res);
const session = await provider.Session.get(oidcContext);
await session.destroy();
这似乎是工作,但是,它的副作用也删除了用户给予的任何赠款。
因此,下次用户登录时,他必须再次通过同意屏幕。
我的问题是:是否有任何方法可以注销用户,但当他重新登录时,不需要他再次通过同意屏幕。
1条答案
按热度按时间xqnpmsa81#
经过进一步调查,发现授权ID存储在会话中。因此,当会话消失时,到授权的链接消失,并且在下次登录时再次询问用户的同意。
有一个解决方案:使用
loadExistingGrant
方法。There is a recipe explaining this function。此功能可用于从会话中获取用户和客户端并加载授权,从而跳过同意屏幕。