フィルタFilterを使用して簡単なログイン検証を行います

4143 ワード

1.需要
簡単なログイン検証を行うには、特定のパスのみが他のパスにログインする必要があります(構成が変更されないと、変更は小さくなります).パスは構成可能です.他の記事を参考に、簡単なログイン検証を行いました.
2.全体的な考え方
プロパティファイルにフィルタが必要なパスを記入し、フィルタの初期化時にパスをロードして保存し、ロードするたびに防止します.フィルタで経路を判断します.
3.コード
filterUrls.propertiesは次のとおりです.
#url判断プロセスは、実際のパスを"/"に基づいて分割し、分割したurl文字列を、属性ファイルとカンマで分割したパスごとに比較する#修正はアイテムを再起動する必要があり、ブロックを初期化するときにのみ#注意:*****はカンマで*****を分割する必要があります.
equalsUrl=system,user,else
xmlで追加


    loginFilter
    ************.filter.LoginFilter


    loginFilter
    /*
LoginFilter.java

/**
 * 

: LoginFilter.java

*

: , filterUrl.properites , , * “/” , url ,

* @author * @version v1.0 * @update [ ][ 2018/11/8] [ ][ ] */ public class LoginFilter implements Filter { private String filterUrlString; // url , @Override public void init(FilterConfig filterConfig) throws ServletException { InputStream res= LoginFilter.class.getResourceAsStream("/filterUrl.properties"); Properties pro = new Properties(); try { pro.load(res); filterUrlString = pro.getProperty("equalsUrl").trim(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(); } } /** * @title:doFilter * @description: , filterUrl.properties , , * @param servletRequest : * @param servletResponse : * @param filterChain : * @return: void * @author: * @update: [1.0][ :2019/7/17 9:35] [ ][ , , ] */ @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; //TODO , session User user = request.getSession().getAttribute("user"); String urlString = request.getRequestURL().toString(); // Servlet /user/else String serUrl = request.getServletPath().trim(); String[] urlFragments; // urlFragments if (serUrl.lastIndexOf("/") == 0) { urlFragments=new String[]{serUrl.substring(1, serUrl.length())}; }else{ urlFragments = serUrl.substring(1, serUrl.length()).split("/"); } // css.png. if (urlString.contains(".css") || urlString.contains(".js") || urlString.contains(".png") || urlString.contains(".jpg") || urlString.contains(".ttf") || urlString.contains(".woff") || urlString.contains(".woff2") || urlString.contains("login/check") urlString.contains(".html")) { filterChain.doFilter(request, response); } if (user == null) { // url, String[] filterUrls = filterUrlString.split(","); boolean state =false; for (String urlFragment : urlFragments) { for (String filterUrl : filterUrls) { if (filterUrl.equals(urlFragment)) { request.getRequestDispatcher("/login/main").forward(request, response); state = true; break; } } if (state){ break; }else{ filterChain.doFilter(request, response); } } } else { filterChain.doFilter(request, response); } } @Override public void destroy() { } }