我们有一个可以使用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;
    }
}
Jor*_*dan -1
用魔法。
只是在开玩笑。
您有某种在每个页面上运行的例程来检查用户是否登录,对吗?好吧,只需在该例程中添加一些逻辑即可检查当前 URL 并重定向到 https 版本(如果您尚未使用)。
if current url is not https:
    redirect to replace(current url, 'http://', 'https://')
| 归档时间: | 
 | 
| 查看次数: | 13909 次 | 
| 最近记录: |