我使用IdentityServer4与自定义用户存储(基于SQL Server数据库)。我想知道如何存储访问令牌以检查每个请求是否具有正确的访问令牌。
我尝试使用默认的操作存储,但它只保存刷新令牌和授权代码。
提前致谢。
如果我理解正确,您希望在服务器端保存访问令牌,以便您可以验证用户请求。您不需要在服务器端存储访问令牌,因为IdentityServer已为您完成此操作。如果您使用身份服务器正确设置api(资源服务器),您只需在api控制器上添加[Authorize]
(似乎您使用的是.net core web api)。您可以在Github上的IdentityServer文档和示例项目中找到许多示例。
在此期间,您可能需要在客户端存储访问令牌,因为在令牌过期之前无需再次验证用户;这取决于您使用的授权类型。当你使用ResourceOwnerPassword
grant时尤其如此;如果您的客户端是SPA(例如Angular),则通常访问令牌存储在浏览器的本地存储中;对于每个客户端请求,您检查是否已有令牌,如果是,也检查它是否已过期。
并且可以支持不同授权的刷新令牌,以便在其访问令牌到期时自动重新验证用户。