使用Ocelot API网关验证用户id



我正在实现一些与单片通信的微服务,所有这些都是用.net内核完成的。目前,我的网关根据其结构验证用户jwt令牌是否有效,但问题是,我需要将用户id(从单体(传递给微服务,并被告知需要对其进行验证。因此,考虑到这一点,我应该采用什么方法来验证传递给微服务的用户id是否存在?

提前感谢

首先,IMO jwt令牌应该由受信任方创建,并且它包含的任何内容都应该已经有效,因此,如果用户最初不存在,则IdentityProvider不应该提供任何jwt令牌。

但是,如果必须这样做,您可以为该场景创建一个自定义中间件,该中间件从请求中读取令牌并验证userid是否存在。

你可以在这里阅读更多关于定制中间件的信息。

您的中间件可能看起来像这样:

public class UserIdValidatprMiddleware
{
private readonly RequestDelegate _next;
public RequestCultureMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context, IIdentityService identityService, IUserStore userStore)
{
var userId = identityService.GetUserIdFromToken();
var userExists = await userStore.CheckIfUserExists(userId);
if (!userExists) throw SomeException();
await _next(context);
}
}

相关内容

  • 没有找到相关文章

最新更新