From fcc87740bf56387cbf8085ba16c7bd3838e3b769 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Mon, 4 Jan 2021 22:57:54 +0000 Subject: [PATCH] Added some extra caching to reduce DB calls --- src/Ombi/Extensions/StartupExtensions.cs | 11 ++++++++--- src/Ombi/Startup.cs | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Ombi/Extensions/StartupExtensions.cs b/src/Ombi/Extensions/StartupExtensions.cs index c36c32a40..860ab40fb 100644 --- a/src/Ombi/Extensions/StartupExtensions.cs +++ b/src/Ombi/Extensions/StartupExtensions.cs @@ -76,7 +76,7 @@ namespace Ombi DemoSingleton.Instance.Demo = enabledDemo; } - public static void AddJwtAuthentication(this IServiceCollection services, IConfigurationRoot configuration) + public static void AddJwtAuthentication(this IServiceCollection services) { var tokenValidationParameters = new TokenValidationParameters { @@ -117,12 +117,17 @@ namespace Ombi OnTokenValidated = async context => { var userid = context.Principal?.Claims?.Where(x => x.Type.Equals("id", StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault()?.Value ?? default; - var um = context.HttpContext.RequestServices.GetRequiredService(); - var user = await um.FindByIdAsync(userid); + var cache = context.HttpContext.RequestServices.GetRequiredService(); + var user = await cache.GetOrAdd(userid + "token", async () => + { + var um = context.HttpContext.RequestServices.GetRequiredService(); + return await um.FindByIdAsync(userid); + }, DateTime.UtcNow.AddMinutes(10)); if (user == null) { context.Fail("invaild token"); } + } }; }); diff --git a/src/Ombi/Startup.cs b/src/Ombi/Startup.cs index 49227a344..2ed2b49e4 100644 --- a/src/Ombi/Startup.cs +++ b/src/Ombi/Startup.cs @@ -86,7 +86,7 @@ namespace Ombi services.AddMemoryCache(); services.AddHttpClient(); - services.AddJwtAuthentication(Configuration); + services.AddJwtAuthentication(); services.AddMvc() .AddNewtonsoftJson(x => x.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore);