1.IFRAME框架中載入的頁面 禁止URL直接訪問
1.在jsp頁面 會使用許多的iframe,使用者可以F12知道 選單的url路徑,然後可以直接URL訪問,或者修改IFRAME中的src地址。
這個時候有兩種方法禁止直接訪問iframe的內容,首先是js載入時候禁止,
/*
* 只允許,同一域名下IFRAME 凨來了
*/
var url = '${pageContext.request.contextPath}/login';
if (parent.window.location.host != window.location.host && top.window.location.href != window.location.href)
{
top.window.location.href = url;
} else if (top == self) {
top.window.location.href = url;
},但是必須在頁面載入前起作用,不然頁面還是會一閃而過。
2.其次就在後臺controller中 加入過濾。
package com.anyinfo.bjwq.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.anyinfo.bjwq.model.Admin;
/**
* 登入攔截器
* @author kevin
*
*/
public class LoginInterceptor extends HandlerInterceptorAdapter implements HandlerInterceptor{
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
Admin admin = (Admin) session.getAttribute("loginUser");
if(admin==null){
response.sendRedirect(request.getContextPath()+"/login");
return false;
}
String getRequestURI = request.getRequestURI();
String idnex=request.getContextPath()+"/index";
String referer=request.getHeader("Referer");
if(referer==null && !idnex.equals(getRequestURI)) {
response.sendRedirect(request.getContextPath()+"/index");
return false;
}
//AuthorityService authorityService = (AuthorityService) SpringContextUtils.getBean("authorityService");
//List<Authority> authorities = authorityService.getTotalAuthorityLists();
//走許可權的判斷,獲取當前url的地址。並判斷該url的地址是否在許可權的集合體系之內,如果不在則丟擲異常,跳轉到異常的頁面
//String url = request.getServletPath();
//System.out.println(url);
return super.preHandle(request, response, handler);
}
}
通過判斷Referer是否為null,來判斷是否是來之頁面的選單訪問還是url直接訪問。
然後在配置檔案中加入mvc:interceptor
<!-- 登入攔截器 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/login"/>
<mvc:exclude-mapping path="/login/drawCheckCode"/>
<mvc:exclude-mapping path="/resources/**"/>
<mvc:exclude-mapping path="/api/**"/>
<mvc:exclude-mapping path="/wechat/**"/>
<mvc:exclude-mapping path="/web/**"/>
<bean class="LoginInterceptor">
</bean>
</mvc:interceptor>