防止頁面回退和設置攔截器防止從URL地址訪問後臺接口

步驟

1.寫一個filter類實現Filter接口並重寫裏面的方法

package com.ujiuye.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class LoginFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
       //轉成原始的requst和response對象,用來拿到session
        HttpServletRequest req = (HttpServletRequest)servletRequest;
        HttpServletResponse resp = (HttpServletResponse)servletResponse;
        HttpSession session = req.getSession();
        //從session中取登陸用戶的信息
        Object loginUser = session.getAttribute("loginUser");
        String requestURL = req.getRequestURI();//取訪問路徑
        //登陸成功會再session中存入loginUser對象的信息,所以如果爲空表示登陸失敗,除去login.jsp登陸頁面,靜態資源,驗證碼的顯示
        if(loginUser != null || requestURL.contains("login")||requestURL.contains("static")||requestURL.contains("code")){
            filterChain.doFilter(req,resp);  //表示放行
        }else{
            resp.sendRedirect(req.getContextPath()+"/login.jsp");  //重定向到登陸頁面
        }
    }

    @Override
    public void destroy() {

    }
}

2.在web.xml裏面配置一下

   <filter>
        <filter-name>LoginFilter</filter-name>
        <filter-class>實現Filter接口的類的全類名</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>LoginFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>

(補充)防止頁面回退

window.history.forward(1)

表示該頁面只能前進不能回退

發佈了6 篇原創文章 · 獲贊 2 · 訪問量 262
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章