diff --git a/src/Nancy/Diagnostics/DiagnosticsConfiguration.cs b/src/Nancy/Diagnostics/DiagnosticsConfiguration.cs index e86fa05fd6..c952f5ab22 100644 --- a/src/Nancy/Diagnostics/DiagnosticsConfiguration.cs +++ b/src/Nancy/Diagnostics/DiagnosticsConfiguration.cs @@ -29,7 +29,7 @@ public DiagnosticsConfiguration(CryptographyConfiguration cryptographyConfigurat this.CookieName = "__ncd"; this.CryptographyConfiguration = cryptographyConfiguration; this.Path = "/_Nancy"; - this.Timeout = 15; + this.SlidingTimeout = 15; } /// @@ -56,17 +56,23 @@ public DiagnosticsConfiguration(CryptographyConfiguration cryptographyConfigurat public string Path { get; set; } /// - /// The number of minutes that you stay logged into the diagnostics dashboard. + /// The number of minutes that expiry of the diagnostics dashboard will be extended each time it is used. /// /// The default is 15 minutes. - public int Timeout { get; set; } + public int SlidingTimeout { get; set; } /// /// Gets a value indicating whether the configuration is valid /// public bool Valid { - get { return !string.IsNullOrWhiteSpace(this.Password); } + get + { + return !string.IsNullOrWhiteSpace(this.Password) && + !string.IsNullOrWhiteSpace(this.CookieName) && + !string.IsNullOrWhiteSpace(this.Path) && + this.SlidingTimeout != 0; + } } } } \ No newline at end of file diff --git a/src/Nancy/Diagnostics/DiagnosticsHook.cs b/src/Nancy/Diagnostics/DiagnosticsHook.cs index d6e577751b..90cf57384c 100644 --- a/src/Nancy/Diagnostics/DiagnosticsHook.cs +++ b/src/Nancy/Diagnostics/DiagnosticsHook.cs @@ -151,7 +151,7 @@ private static void AddUpdateSessionCookie(DiagnosticsSession session, NancyCont return; } - session.Expiry = DateTime.Now.AddMinutes(diagnosticsConfiguration.Timeout); + session.Expiry = DateTime.Now.AddMinutes(diagnosticsConfiguration.SlidingTimeout); var serializedSession = serializer.Serialize(session); var encryptedSession = diagnosticsConfiguration.CryptographyConfiguration.EncryptionProvider.Encrypt(serializedSession); @@ -227,7 +227,7 @@ private static DiagnosticsSession ProcessLogin(NancyContext context, Diagnostics { Hash = hash, Salt = salt, - Expiry = DateTime.Now.AddMinutes(diagnosticsConfiguration.Timeout) + Expiry = DateTime.Now.AddMinutes(diagnosticsConfiguration.SlidingTimeout) }; return session; @@ -235,8 +235,8 @@ private static DiagnosticsSession ProcessLogin(NancyContext context, Diagnostics private static bool IsLoginRequest(NancyContext context, DiagnosticsConfiguration diagnosticsConfiguration) { - return context.Request.Method == "POST" && - context.Request.Path == diagnosticsConfiguration.Path; + return context.Request.Method == "POST" && + context.Request.Path.TrimEnd(new[] { '/' }) == diagnosticsConfiguration.Path; } private static void ExecuteRoutePreReq(NancyContext context, Func resolveResultPreReq)