C# 如何在用户OnSignedIn事件启动时创建Redis缓存?

C# 如何在用户OnSignedIn事件启动时创建Redis缓存?,c#,asp.net-core,identityserver4,stackexchange.redis,C#,Asp.net Core,Identityserver4,Stackexchange.redis,.NET核心3.1 我得到了一个如何从Identity Server注销所有客户端的方法 我是按这一章工作的 但现在我有了一个新问题。 在OnSignedIn事件中,我想将用户id添加到Redis缓存中,但我不知道如何添加 这是一种不好的做法: var sp = services.BuildServiceProvider(); var cache = sp.GetService<IDistributedCache>(); cache.SetString("helloFromRedis

.NET核心3.1

我得到了一个如何从Identity Server注销所有客户端的方法

我是按这一章工作的

但现在我有了一个新问题。 在OnSignedIn事件中,我想将用户id添加到Redis缓存中,但我不知道如何添加

这是一种不好的做法:

var sp = services.BuildServiceProvider();
var cache = sp.GetService<IDistributedCache>();
cache.SetString("helloFromRedis", "world");
var valueFromRedis = cache.GetString("helloFromRedis");
Console.WriteLine(valueFromRedis);

如何解析Redis缓存?

您可以这样做:

o.Events.OnSignedIn = ctx =>
{
    var cache = ctx.HttpContext.RequestServices.GetRequiredService<IDistributedCache>();
    return  Task.CompletedTask;
};
o.Events.OnSignedIn=ctx=>
{
var cache=ctx.HttpContext.RequestServices.GetRequiredService();
返回Task.CompletedTask;
};

RequestServices
属性是
IServiceProvider

的一个实例。您必须有一个在用户进行身份验证时调用的端点。您不应该在该事件中使用服务,它是用于调试的。使用端点并在那里注入
IDistributedCache
,然后缓存您需要的任何内容。@alsami如何创建端点?成功登录后,Identity Server重定向到/signin oidc,然后应用程序重定向到上一页。我无法处理/登录oidc端点。您没有注册登录回调吗@alsami我已在mvc客户端选项中注册。CallbackPath=“/callback login”;在Nginx日志中,登录方法为:POST 302,但控制台不写入word,客户端重定向到上一页。[HttpPost(“回调登录”)]公共IActionResult登录(){Console.WriteLine(“>”);返回Ok();}
o.Events.OnSignedIn = ctx =>
{
    var cache = ctx.HttpContext.RequestServices.GetRequiredService<IDistributedCache>();
    return  Task.CompletedTask;
};