JavaWeb之登录功能解决用户直接通过访问对应地址而跳过登录的bug,使用Filter拦截

当用户访问我们的网站时,对于部分页面我们希望他必须使用账号登录,而现在有个问题是,用户直接访问对应页面的地址而直接跳过账号登录,这个漏洞如何解决呢?
可以使用过滤器,通过登录账号在对应的会话域对象中的参数,判断它是否登录了,如果没登录,就把他拦截下来。

package com.symc.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @Author: 凤文  沈阳医学院2019级医学信息工程 0213
 * @CreateTime: 2021/11/18 15:53
 * @Description: 检查登录
 * 1.实现Filter接口,重写doFilter方法
 * 2.将请求和响应对象转换为HTTP协议相关
 * 3.获取会话域对象中数据
 * 4.判断用户名是否获取,获取了就直接进入,没获取就重定向到登录页面
 * 5.注解拦截,多个拦截路径
 */
@WebFilter(value = {"/addStudent.jsp","/listStudentServlet"})
public class LoginFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;

        Object username = request.getSession().getAttribute("username");
        if (username == null) {
            response.sendRedirect(request.getContextPath() + "/login.jsp");
            return;
        }

        filterChain.doFilter(request,response);
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值