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);