import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.lovo.oa.object.User;
public class AuthFilter implements Filter {
String charset;
String fileFilter;
public void destroy() {
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
//字符过滤
servletRequest.setCharacterEncoding(charset);
servletResponse.setCharacterEncoding(charset);
servletResponse.setContentType("text/html;charset="+charset);
//处理HTTP请求,需要访问在ServletRequest中无法得到的方法,
//就要把此request对象构造成HttpServletRequest
HttpServletRequest request = (HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse)servletResponse;
String currentURL = request.getRequestURI(); //取得访问页面所对应根目录的绝对路径:
String targetURL = currentURL.substring(currentURL.indexOf("/", 1),
currentURL.length()); //截取到当前文件名用于比较
HttpSession session = request.getSession(false);
User user = (User)request.getSession().getAttribute("userPo");
if (!"/index.jsp".equals(targetURL)) {
//判断当前页是否是重定向以后的登录页面页面,如果是就不做session的判断,防止出现死循环
if (session == null || session.getAttribute("userPo") == null) {
response.sendRedirect(request.getContextPath() + "/index.jsp");// request.getContextPath()取得根目录
//如果session为空表示用户没有登录就重定向到index.jsp页面
return;
}else if(session != null&&user.getR_id()!=2){
String [] url = targetURL.split("/");
for(int i=0;i<url.length;i++){
if(url[i].equals(fileFilter)){
response.sendRedirect(request.getContextPath() + "/jsp/infoErrors.jsp");
return;
}
}
}
}
//加入filter链继续向下执行
filterChain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
fileFilter = filterConfig.getInitParameter("fileFilter");
}
}
分享到:
相关推荐
Java SSH 权限验证过滤器实现。。。内容简单 有部分struts.xml配置信息,自己测试过。仅供参考。。。
实现对网页的访问控制权限,使用过滤器的方法实现的权限访问
Struts2拦截器实现权限控制demo,我感觉对初学者还是有一定帮助的
过滤器实现分目录权限控制 servlet+jsp 没加数据库
NULL 博文链接:https://zywang.iteye.com/blog/407019
获得structs的相对权限 url实现权限控制
java的权限过滤器,通过拦截action来实现,非常详细!
基于Java过滤器实现的系统权限控制方法研究.pdf
filter过滤器实现权限访问控制以及同一账号只能登录一台设备
servlet,filter,过滤器技术servlet,filter,过滤器技术
spring mvc 过滤器,实现url过滤,权限模块经常用到的,很不错
NULL 博文链接:https://bingwangzi1988.iteye.com/blog/755932
本教程中以实际例子介绍了过滤器的运行方式,以JSP开发中常见的中文乱码过滤器和限抽客户机IP访问的二个例子,本教程中代码部分转载,都经过本人修改了其中错误,加了详细注释,保证可以正常运行,希望对大家有所帮助
1:过滤器的原理。 2:如何使用过滤器。(对象 api 实现业务功能) 3:映射filter的多种方式 4:filter的案例(重点掌握) 1) 用户权限url设置 2) 解决全网站的post和get方式乱码。
本demo为Spring boot整合shiro,以mybatis plus做dao层交互数据,实现了读取数据库用户数据实现用户登录,权限认证,读取数据库中用户对应的url请求,实现请求的过滤。自定义了relam和过滤器来实现这些功能
本资源包含 防盗链 、字符编码过滤、日志、异常处理、权限管理、字符过滤、图片水印、Cache缓存等 可直接使用 使用方法请看配置文件
判断用户登录,并操作系统功能,如果存在Session(即存在用户信息),则正常访问,如果不存在用户信息则不能登录系统。
Filter过滤器,对web服务器所有web资源进行过滤,从而实现一些特殊的功能(权限访问控制、过滤敏感词汇、压缩响应信息)。Filter能够对Servlet容器的请求和响应进行检查和修改,其本身不能生成请求request和响应...
最近在公司项目中用MVC内置的权限过滤器实现权限控制功能,查阅以前的代码发现权限过滤接口已经被实现在其他地方,作用是用户访问系统任何页面时都要判断是否登录,如果没有登录,就会自动读取本机的域账号信息,并...
在具体的项目中,在SSH 框架基础上,使用Spring 的IoC 容器存储对象,使用过滤器拦截控制访问,具体实现RBAC 模型,从而构建良好的权限管理系统,并取得很好的效果。 关键词: RBAC; SSH 框架; 权限管理; 过滤器