1. request.getScheme() 返回當前連接使用的協議;
2. request.getServerName() 獲取網站的域名;
3. request.getServerPort() 獲取的服務器的請求端口;javascript
4. request.getContextPath()獲取當前的系統路徑;html
-
import java.io.IOException;
-
-
import javax.servlet.http.HttpServletRequest;
-
import javax.servlet.http.HttpServletResponse;
-
import javax.servlet.http.HttpSession;
-
-
import org.apache.log4j.Logger;
-
import org.springframework.web.servlet.HandlerInterceptor;
-
import org.springframework.web.servlet.ModelAndView;
-
-
public
class LoginInterceptor implements HandlerInterceptor{
-
-
private
static Logger logger = Logger.getLogger(LoginInterceptor.class);
-
@Override
-
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
-
throws Exception {
-
response.setHeader(
"Access-Control-Allow-Origin",
"http://localhost");
// 容許跨域請求
-
response.setHeader(
"Access-Control-Allow-Credentials",
"true");
-
HttpSession session = request.getSession();
-
Object userId = session.getAttribute(
"userId");
-
if(userId ==
null){
-
logger.info(
"用戶未登陸");
-
requestDirect(request, response);
-
return
false;
-
}
else{
-
return
true;
-
}
-
}
-
-
@Override
-
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
-
ModelAndView modelAndView)
throws Exception {
-
-
}
-
-
@Override
-
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
-
throws Exception {
-
-
}
-
-
public void requestDirect(HttpServletRequest request, HttpServletResponse response) throws IOException{
-
//獲取當前請求的路徑
-
String basePath = request.getScheme() +
"://" + request.getServerName() +
":" + request.getServerPort()+request.getContextPath();
-
//若是request.getHeader("X-Requested-With") 返回的是"XMLHttpRequest"說明就是ajax請求
-
if(
"XMLHttpRequest".equals(request.getHeader(
"X-Requested-With"))){
-
//前端須要判斷是不是重定向
-
response.setHeader(
"REDIRECT",
"REDIRECT");
-
//須要重定向的路徑
-
response.setHeader(
"CONTENTPATH", basePath+
"/login.html");
-
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
-
}
else{
-
response.sendRedirect(basePath +
"/login.html");
-
}
-
}
-
-
}
-
var jqxhr;
-
//設置ajax請求完成後運行的函數,
-
$.ajaxSetup({
-
complete:
function(){
-
if(
"REDIRECT" == jqxhr.getResponseHeader(
"REDIRECT")){
//若HEADER中含有REDIRECT說明後端想重定向,
-
var win =
window;
-
while(win != win.top){
-
win = win.top;
-
}
-
win.location.href = jqxhr.getResponseHeader(
"CONTENTPATH");
//將後端重定向的地址取出來,使用win.location.href去實現重定向的要求
-
}
-
}
-
});