From bcd92916cab7c23f6530009192539e4c1efb9b24 Mon Sep 17 00:00:00 2001 From: Naoki Takezoe Date: Sun, 3 Dec 2017 04:36:05 +0900 Subject: [PATCH] Fix routing in CompositeScalatraFilter --- .../core/servlet/CompositeScalatraFilter.scala | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/scala/gitbucket/core/servlet/CompositeScalatraFilter.scala b/src/main/scala/gitbucket/core/servlet/CompositeScalatraFilter.scala index c180738e7..29102d0b3 100644 --- a/src/main/scala/gitbucket/core/servlet/CompositeScalatraFilter.scala +++ b/src/main/scala/gitbucket/core/servlet/CompositeScalatraFilter.scala @@ -28,12 +28,18 @@ class CompositeScalatraFilter extends Filter { } override def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain): Unit = { - val requestUri = request.asInstanceOf[HttpServletRequest].getRequestURI + val contextPath = request.getServletContext.getContextPath + val requestPath = request.asInstanceOf[HttpServletRequest].getRequestURI.substring(contextPath.length) + val checkPath = if(requestPath.endsWith("/")){ + requestPath + } else { + requestPath + "/" + } filters .filter { case (_, path) => val start = path.replaceFirst("/\\*$", "/") - (requestUri + "/").startsWith(start) + checkPath.startsWith(start) } .foreach { case (filter, _) => val mockChain = new MockFilterChain()