废话不多说上代码
@WebFilter(urlPatterns = "/*")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
if (false) {
filterChain.doFilter(servletRequest, servletResponse);
return;
}
HttpServletRequest request = (HttpServletRequest) servletRequest;
String servletPath = request.getServletPath();
if ("/admin/login".equals(servletPath) || "/admin/captcha".equals(servletPath)
|| servletPath.startsWith("/plugins/") || servletPath.startsWith("/dist/")) {
filterChain.doFilter(servletRequest, servletResponse);
} else {
User user = (User) request.getSession().getAttribute("user");
if (user != null) {
request.setAttribute("path", servletPath);
if (user.getPower() > 4) {
filterChain.doFilter(servletRequest, servletResponse);
} else {
if ("/admin/room".equals(servletPath)) {
((HttpServletResponse) servletResponse).sendRedirect("./main");
} else {
filterChain.doFilter(servletRequest, servletResponse);
}
}
} else {
((HttpServletResponse) servletResponse).sendRedirect("./login");
}
}
}
@Override
public void destroy() {
}
}
本文展示了一个Java Web应用中使用的过滤器代码示例,该过滤器实现了基本的权限控制逻辑。通过检查用户会话中的登录状态和权限等级,决定是否允许用户访问特定的资源路径。未登录用户将被重定向到登录页面,而登录用户根据其权限等级被允许访问或拒绝访问特定的管理页面。
1023

被折叠的 条评论
为什么被折叠?



