1. 程式人生 > >1.IFRAME框架中載入的頁面 禁止URL直接訪問

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>