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