mirror of https://github.com/halo-dev/halo
				
				
				
			分别渲染404和500页面
							parent
							
								
									313e6ec437
								
							
						
					
					
						commit
						cfb261eb4f
					
				| 
						 | 
					@ -1,6 +1,8 @@
 | 
				
			||||||
package cc.ryanc.halo.web.controller.core;
 | 
					package cc.ryanc.halo.web.controller.core;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import cc.ryanc.halo.logging.Logger;
 | 
					import cc.ryanc.halo.logging.Logger;
 | 
				
			||||||
 | 
					import cc.ryanc.halo.model.entity.User;
 | 
				
			||||||
 | 
					import cc.ryanc.halo.model.support.HaloConst;
 | 
				
			||||||
import cn.hutool.core.text.StrBuilder;
 | 
					import cn.hutool.core.text.StrBuilder;
 | 
				
			||||||
import org.springframework.boot.web.servlet.error.ErrorController;
 | 
					import org.springframework.boot.web.servlet.error.ErrorController;
 | 
				
			||||||
import org.springframework.stereotype.Controller;
 | 
					import org.springframework.stereotype.Controller;
 | 
				
			||||||
| 
						 | 
					@ -8,6 +10,7 @@ import org.springframework.util.StringUtils;
 | 
				
			||||||
import org.springframework.web.bind.annotation.GetMapping;
 | 
					import org.springframework.web.bind.annotation.GetMapping;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.servlet.http.HttpServletRequest;
 | 
					import javax.servlet.http.HttpServletRequest;
 | 
				
			||||||
 | 
					import javax.servlet.http.HttpSession;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * <pre>
 | 
					 * <pre>
 | 
				
			||||||
| 
						 | 
					@ -31,11 +34,13 @@ public class CommonController implements ErrorController {
 | 
				
			||||||
     * @return String
 | 
					     * @return String
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @GetMapping(value = ERROR_PATH)
 | 
					    @GetMapping(value = ERROR_PATH)
 | 
				
			||||||
    public String handleError(HttpServletRequest request) {
 | 
					    public String handleError(HttpServletRequest request, HttpSession session) {
 | 
				
			||||||
        final Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
 | 
					        final Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        final String requestURI = request.getRequestURI();
 | 
					        final String requestURI = request.getRequestURI();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        final User user = (User) session.getAttribute(HaloConst.USER_SESSION_KEY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        log.error("Error path: [{}], status: [{}]", request.getRequestURI(), statusCode);
 | 
					        log.error("Error path: [{}], status: [{}]", request.getRequestURI(), statusCode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Get the exception
 | 
					        // Get the exception
 | 
				
			||||||
| 
						 | 
					@ -47,14 +52,14 @@ public class CommonController implements ErrorController {
 | 
				
			||||||
            if (StringUtils.startsWithIgnoreCase(throwable.getMessage(), "Could not resolve view with name '")) {
 | 
					            if (StringUtils.startsWithIgnoreCase(throwable.getMessage(), "Could not resolve view with name '")) {
 | 
				
			||||||
                // TODO May cause unreasoned problem
 | 
					                // TODO May cause unreasoned problem
 | 
				
			||||||
                // if Ftl was not found then redirect to /404
 | 
					                // if Ftl was not found then redirect to /404
 | 
				
			||||||
                if (requestURI.contains("/admin")) {
 | 
					                if (requestURI.contains("/admin") && null != user) {
 | 
				
			||||||
                    return "redirect:/admin/404";
 | 
					                    return "redirect:/admin/404";
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    return "redirect:/404";
 | 
					                    return "redirect:/404";
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (requestURI.contains("/admin")) {
 | 
					        if (requestURI.contains("/admin") && null != user) {
 | 
				
			||||||
            return "redirect:/admin/500";
 | 
					            return "redirect:/admin/500";
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            return "redirect:/500";
 | 
					            return "redirect:/500";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue