Fix redirect path encoding.

This commit is contained in:
takezoe
2013-11-10 02:45:54 +09:00
parent dd4abb2073
commit ac4d4de3c1
2 changed files with 4 additions and 4 deletions

View File

@@ -3,7 +3,7 @@ package app
import _root_.util.Directory._ import _root_.util.Directory._
import _root_.util.Implicits._ import _root_.util.Implicits._
import _root_.util.ControlUtil._ import _root_.util.ControlUtil._
import _root_.util.{FileUtil, Validations, Keys} import _root_.util.{StringUtil, FileUtil, Validations, Keys}
import org.scalatra._ import org.scalatra._
import org.scalatra.json._ import org.scalatra.json._
import org.json4s._ import org.json4s._
@@ -38,7 +38,7 @@ abstract class ControllerBase extends ScalatraFilter
val account = httpRequest.getSession.getAttribute(Keys.Session.LoginAccount).asInstanceOf[Account] val account = httpRequest.getSession.getAttribute(Keys.Session.LoginAccount).asInstanceOf[Account]
if(account == null){ if(account == null){
// Redirect to login form // Redirect to login form
httpResponse.sendRedirect(context + "/signin?" + path) httpResponse.sendRedirect(context + "/signin?" + StringUtil.urlEncode(path))
} else if(account.isAdmin){ } else if(account.isAdmin){
// H2 Console (administrators only) // H2 Console (administrators only)
chain.doFilter(request, response) chain.doFilter(request, response)
@@ -107,7 +107,7 @@ abstract class ControllerBase extends ScalatraFilter
if(request.getMethod.toUpperCase == "POST"){ if(request.getMethod.toUpperCase == "POST"){
org.scalatra.Unauthorized(redirect("/signin")) org.scalatra.Unauthorized(redirect("/signin"))
} else { } else {
org.scalatra.Unauthorized(redirect("/signin?redirect=" + currentURL)) org.scalatra.Unauthorized(redirect("/signin?redirect=" + StringUtil.urlEncode(currentURL)))
} }
} }
} }

View File

@@ -48,7 +48,7 @@ trait SignInControllerBase extends ControllerBase { self: SystemSettingsService
if(redirectUrl.replaceFirst("/$", "") == request.getContextPath){ if(redirectUrl.replaceFirst("/$", "") == request.getContextPath){
redirect("/") redirect("/")
} else { } else {
redirect(urlEncode(redirectUrl).replaceAll("%2F", "/")) redirect(redirectUrl)
} }
}.getOrElse { }.getOrElse {
redirect("/") redirect("/")