中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Filter控制url訪問權限

發布時間:2020-07-17 06:47:27 來源:網絡 閱讀:462 作者:cnslp 欄目:開發技術
public class ForumFilter implements Filter {

    private static final String[] UNLOGIN_URIS = {"/index.jsp","/index.do","/login.jsp","/login/doLogin.do","/register.jsp",
                                                                "/register.do","/board/listBoardTopics-","/board/listTopicPosts-"};

    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

         HttpServletRequest request = (HttpServletRequest) servletRequest;
         User user = getSessionUser(request);
         if (user==null && !isURILogin(request.getRequestURI(),request)){
             String toUrl = request.getRequestURI();
             if (!StringUtils.isEmpty(request.getQueryString())){
                  toUrl += "?" + request.getQueryString();
              }
              request.getSession().setAttribute(Define.LOGIN_TO_URL,toUrl);
              request.getRequestDispatcher("/login.jsp").forward(servletRequest,servletResponse);
              return;
          }
          filterChain.doFilter(servletRequest,servletResponse);
        }

    }
    protected User getSessionUser(HttpServletRequest request) {
        return (User) request.getSession().getAttribute(Define.UserLine);
    }

    public void destroy() {
    }

    protected boolean isURILogin(String requestURI,HttpServletRequest request){
        if (request.getContextPath().equalsIgnoreCase(requestURI)
                || (request.getContextPath() + "/").equalsIgnoreCase(requestURI))
            return true;
        for (String uri : UNLOGIN_URIS) {
            if (requestURI != null && requestURI.indexOf(uri) >= 0) {
                return true;
            }
        }
        return false;
    }
}
  1. 實現Filter接口,重寫doFilter方法。

  2. 將ServletRequest轉成HttpServletRequest并且獲取session中的用戶。

  3. 如果存在用戶或者訪問的url是可以不登入就可訪問的,即已經登入成功了,那就直接doFilter();

  4. 如果不存在,那就保存當前要訪問的url,然后跳轉到登入界面,如果登入成功再跳回此url。


getContextPath():得到當前應用的根目錄

在一些應用中,未登錄用戶請求了必須登錄的資源時,提示用戶登錄,此時要記住用戶訪問的當前頁面的URL,當他登錄成功后根據記住的URL跳回用戶最后訪問的頁面:

String lastAccessUrl = request.getRequestURI() + "?" + request.getQueryString();


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万宁市| 南平市| 舟山市| 龙游县| 贵州省| 龙川县| 余干县| 南平市| 邮箱| 龙口市| 房产| 施秉县| 余庆县| 福清市| 方正县| 吴堡县| 汾阳市| 武陟县| 富平县| 浮山县| 双鸭山市| 长泰县| 怀化市| 九龙县| 阿鲁科尔沁旗| 长白| 扎兰屯市| 无为县| 杨浦区| 镇江市| 遂平县| 普宁市| 义马市| 泰宁县| 岢岚县| 天津市| 定西市| 公安县| 镶黄旗| 惠水县| 娄底市|