Http到https重定向

Sri*_*vas 9 java http

我们有一个可以使用http和https访问的网站

我们需要使用http来访问所有页面,这样可以正常工作但是当用户登录到站点时,我们需要所有经过身份验证的页面都需要使用https显示

请告诉我们实现这一目标的最简单方法

谢谢Srinivas

Mau*_*rry 10

你可以使用一个过滤器:

public class MyFilter implements Filter {
    private FilterConfig conf;

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest)request;
        HttpServletResponse resp = (HttpServletResponse)response;
        if (req.getRemoteUser() != null && req.getScheme().equals("http")) {
            String url = "https://" + req.getServerName()
                    + req.getContextPath() + req.getServletPath();
            if (req.getPathInfo() != null) {
                url += req.getPathInfo();
            }
            resp.sendRedirect(url);
        } else {
            chain.doFilter(request, response);
        }
    }

    public FilterConfig getFilterConfig() {
        return conf;
    }

    public void setFilterConfig(FilterConfig filterConfig) {
        conf = filterConfig;
    }

    public void destroy() {        
    }

    public void init(FilterConfig filterConfig) {
        conf = filterConfig;
    }
}
Run Code Online (Sandbox Code Playgroud)


Jor*_*dan -1

用魔法。

只是在开玩笑。

您有某种在每个页面上运行的例程来检查用户是否登录,对吗?好吧,只需在该例程中添加一些逻辑即可检查当前 URL 并重定向到 https 版本(如果您尚未使用)。

if current url is not https:
    redirect to replace(current url, 'http://', 'https://')
Run Code Online (Sandbox Code Playgroud)