91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

使用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

常州市| 乌鲁木齐市| 巴南区| 石河子市| 高安市| 栖霞市| 砀山县| 云梦县| 通州市| 博乐市| 铅山县| 无为县| 宝兴县| 德化县| 桃园市| 宁津县| 兴城市| 双城市| 江安县| 云龙县| 肃宁县| 阜城县| 南汇区| 朝阳县| 利川市| 大悟县| 南阳市| 桃源县| 乳山市| 黑山县| 晋城| 晋州市| 宿松县| 潞城市| 安龙县| 原阳县| 武川县| 博兴县| 洛扎县| 南城县| 托克逊县|