在Asp.net Core中的openid connect登录后运行代码

Mit*_*art 9 authentication asp.net-mvc openid-connect .net-core identityserver3

一旦用户使用Dotnet Core MVC应用程序上的OpenID Connect进行身份验证,我试图找出运行某些代码的最佳方法.我不想在登录后对重定向URL进行硬编码,因为他们仍然需要在验证后尝试访问的地方结束.我只需要运行代码,例如."检查它是否第一次登录并设置标志"或类似的东西.

我使用的是中间件,但是因为每个请求都会调用它而导致一些问题.

有没有人对如何实现这一点有任何想法?

Mit*_*art 5

我正在使用 OpenIdConnect 事件来解决这个问题。

.AddOpenIdConnect("oidc", options =>
{
   options.Events = new OpenIdConnectEvents
   {
       OnTokenValidated = async ctx =>
       {
           var userID = ctx.Principal.FindFirstValue("sub");

           var db = ctx.HttpContext.RequestServices.GetRequiredService<MyDb>();

           //Do things I need to do with the user here.

       }
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 这*每次*用户提交令牌时都会运行,而不是每次他们实际登录并获得所述令牌时。如果这对您来说是个问题,请参阅 [此处](/sf/answers/3478379271/)。 (3认同)