多语言展示
当前在线:1008今日阅读:23今日分享:25

java登陆过滤器

在我们做java项目时,常常会遇到越权操作,就是用户未登录,直接访问了某个action或者jsp,从而操作,我们每个页面都加个判断用户是否登陆太麻烦,这样设计也不合理。我们在这推荐用过滤器,过滤器就是每次请求都会先经过过滤器才会出发正真的类。
工具/原料

 java项目

方法/步骤
1

打开java web项目的web.xml,配上如下代码     SessionFilter      com.ccse.frame.filter.SessionFilter           SessionFilter      /pages/*       如下图

2

上面配置过滤器中我们可以看到,有个com.ccse.frame.filter.SessionFilter 这个类,那下面我们就把这个类加入项目中,路径自己设置。代码如下package com.ccse.frame.filter;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;public class SessionFilter implements Filter {    public void init(FilterConfig filterConfig) throws ServletException {    }    public void doFilter(ServletRequest request, ServletResponse response,        FilterChain chain) throws IOException, ServletException {        HttpServletRequest req = (HttpServletRequest) request;        HttpServletResponse res = (HttpServletResponse) response;        HttpSession session = req.getSession(true);        //从session里取的用户名信息          String username = (String) session.getAttribute('baseUserId');//这句话自己改,看登陆的时候在session里插入了什么,就去什么去判断。        //判断如果没有取到用户信息,就跳转到登陆页面          if ((username == null) || ''.equals(username)) {            //跳转到登陆页面              res.sendRedirect('http://' + req.getHeader('Host') +                '/login_oa.jsp');        } else {            //已经登陆,继续此次请求              chain.doFilter(req, res);        }    }    public void destroy() {    }}如下图

3

下面在不登陆我们访问下项目中的某个文件活action请求,看看是不是不能访问,自动跳转到上面定义的登陆页面了,哈哈就这么简单,大功告成。

注意事项
1

自己修改代码里的session获取,和跳转的登陆页面

2

自己修改xml中的,要拦截项目中的那些目录,如我的jsp在page下,所以拦截这里。

推荐信息