我已经构建了一个登录Webfilter,如果会话未经过身份验证,则会重定向到登录页面。
我的问题是,重定向会重定向到Web服务器上同一文件夹中的页面,当被调用页面不在根文件夹中时,该页面会失败。
webfilter重定向到“./login.jsf” 例: 如果我打电话给“www.application.ch/App”它可以工作,我会被重定向到“www.application.ch/App/login.jsf”
但是当我打电话给“www.application.ch/App/pages/page.jsf”时,它会将我重定向到“www.application.ch/App/pages/login.jsf”
当然我可以将重定向设置为“../login.jsf”,但是当调用root时它不起作用。
如何解决这个问题?
答案 0 :(得分:0)
重定向到域相对URL。换句话说,始终使用/
启动重定向网址,包括上下文路径。如果您真正关注的是上下文路径/App
的动态性,请按HttpServletRequest#getContextPath()
以编程方式获取。
response.sendRedirect(request.getContextPath() + "/login.jsf");
请注意,filter example已经在your previous question中为您提供了。