待办清单项目7:添加登录校验功能
4/24/2025
196 阅读
为什么要做登录校验
- 原因1:启动服务器后,在浏览器可以通过下面的网址直接访问待办事项的网页
这是不合理的,用户都没有登录,怎么可以显示他的待办事项呢?
- 原因2:启动服务器后,在浏览器可以通过下面的网址
http://localhost:8080/TodoList/todo/add
http://localhost:8080/TodoList/todo/delete
http://localhost:8080/TodoList/todo/edit
http://localhost:8080/TodoList/todo/list
访问SysTodoController
控制器,直接进行待办事项的增删改查
这些操作在用户没有登录的时候不应被允许
添加Session保存登录用户的功能
双击SysUserController
文件,找到login
登录方法,把else
里面的代码改成下面这样
//4.1 把登录用户设置到session里面进行保存
req.getSession().setAttribute("loginUser", loginUser);
//4. 跳转到待办事项页面
resp.sendRedirect("/TodoList/todoList.html");
在用户每次登录成功后,服务器会将该用户保存到服务器的Session
里面
添加过滤器
- 在
com
包上单击右键,新建软件包,取名为filter
- 在filter包上新建Java类,取名为
LoginFilter
,用于验证用户是否已经登录
- 编辑
LoginFilter
,代码如下:
package com.youngshu.todolist.filter;
import com.youngshu.todolist.pojo.SysUser;
import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.io.IOException;
// 定义一个过滤器,用于拦截对"/todoList.html"和"/todo/*"的请求
@WebFilter(urlPatterns = {"/todoList.html","/todo/*"})
public class LoginFilter implements Filter {
// 实现Filter接口的doFilter方法,该方法会在请求被实际处理之前被调用
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// 将ServletRequest和ServletResponse参数转换为HttpServletRequest和HttpServletResponse类型
HttpServletRequest request =(HttpServletRequest) servletRequest;
HttpServletResponse response =(HttpServletResponse) servletResponse;
// 获取当前请求的HttpSession对象
HttpSession session = request.getSession();
// 从session中获取名为"loginUser"的属性,该属性应为SysUser类型的登录用户对象
SysUser sysUser = (SysUser)session.getAttribute("loginUser");
// 判断登录用户对象是否为空
if(null == sysUser){
// 如果用户对象为空,说明用户未登录,重定向到登录页面Login.html
response.sendRedirect("/TodoList/login.html");
}else{
// 如果用户对象不为空,说明用户已登录,继续执行后续的过滤器或目标资源
filterChain.doFilter(request,response);
}
}
}
测试
- 启动服务器,清空一下浏览器缓存,然后直接访问下面的网址:
http://localhost:8080/TodoList/todoList.html
http://localhost:8080/TodoList/todo/add
http://localhost:8080/TodoList/todo/delete
http://localhost:8080/TodoList/todo/edit
http://localhost:8080/TodoList/todo/list
会发现网页会跳转到登录页
- 在登录页登录之后,再尝试访问上面的网址,发现可以正常访问,说明登录校验过滤器配置成功。
评论 (0)
暂无评论,来发表第一条评论吧!