用户模块-----非法拦截,自动登录

非法拦截

com.filter包内 ,新建一个 LoginAccessFilter 过滤器,

注解:@WebFilter(" / * ")   拦截所有

@WebFilter("/*") //拦截所有
public class LoginAccessFilter implements Filter {

public LoginAccessFilter() {
}

public void destroy() {
}

1、静态资源(statics目录下的资源)  放行
    2、指定页面(登录页面login.jsp、注册页面register.jsp等)    放行
    3、指定行为(登录操作、注册操作等)    放行
    4、登录状态(session作用域中的user对象不为空)    放行

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {

//基于Http
HttpServletRequset request=(HttpServletRequest) req; //强转
HttpServletResponse response=(HttpServletResponse) resp;

//获取请求的路径
String path=request.getRequestURI(); //从站点名到问号结束

//对需要放行内容的操作
//1.静态资源 (statics目录下的资源) 放行
if(path.contains("/statics")){  // 加"/"表示路径
    chain.doFilter(request,response);
    return;
}

//2.指定页面(登录页面login.jsp、注册页面 register.jsp等)放行
if(path.contains("/login.jsp")){
    chain.doFilter(request,response);
    return;
}

//3.指定行为(登录操作、注册操作等)放行
//需要先获取行为,得到用户的行为
String action=request.getParameter("user");
if(path.contains("/user")){
    if("login".equals(action)){
        chain.doFilter(request,response);
        return;
    }
}

//4.登录状态(session作用域中user对象不为空)放行
User user=request.getSession().getAttribute("user");
if(user!=null){
    chain.doFilter(request,response);
    return;
}

自动登录

5、当cookie不为空时,可自动调用登录操作
        1、获取cookie数组
        2、判断cookie是否为空
        3、遍历cookie数组,得到指定cookie对象
        4、得到cookie对应的cookie,截取得到用户名和密码
        5、请求转发调用登录操作

//自动登录

//5.当cookie不为空时,可自动调用登录操作

//1.获取cookie数组
Cookie[] cookies=request.getCookies();

//2.判断cookie是否为空
if(cookies!=null && cookies.length>0){

    //3.遍历cookie数组,得到指定cookie对象
    for(Cookie cookie:cookies){
        
        //4.得到cookie对应的cookie,截取得到用户名和密码
        if("user".equals(cookie.getName)){
            String value=cookie.getValue();
            String uname=value.split("-")[0];
            String upwd=value.spilt("-")[1];
            String url="user?action=login&userName="+uname+"&userPwd="+upwd;

            //5.请求转发调用登录操作
            request.getRequestDispatcher(url).forward(request,response);
            return;
        }
    }
}

//拦截到登录页面
response.sendRedirect("login.jsp");

}

作者:来世还生华夏门
来源:CSDN
原文:https://blog.csdn.net/qq_38708432/article/details/82996540
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值