微头条项目实战:通过postman测试登录验证请求

1、CrosFilter

java 复制代码
package com.csdn.headline.filters;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
public class CrosFilter implements Filter {
    /**
     * 过滤器方法,用于处理HTTP请求
     * @param servletRequest  Servlet请求对象
     * @param servletResponse Servlet响应对象
     * @param filterChain     过滤器链
     * @throws IOException      如果发生IO异常
     * @throws ServletException 如果发生Servlet异常
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        // 将响应对象转换为HttpServletResponse类型
        HttpServletResponse response = (HttpServletResponse) servletResponse;

        // 设置Access-Control-Allow-Origin头部字段为"*",表示允许所有来源访问
        response.setHeader("Access-Control-Allow-Origin", "*");

        // 设置Access-Control-Allow-Methods头部字段为"POST, GET, OPTIONS, DELETE, HEAD",表示支持的请求方法
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, HEAD");

        // 设置Access-Control-Max-Age头部字段为"3600",表示预检请求的最大缓存时间
        response.setHeader("Access-Control-Max-Age", "3600");

        // 设置Access-Control-Allow-Headers头部字段为"access-control-allow-origin, authority, content-type, version-info, X-Requested-With",表示支持的请求头
        response.setHeader("Access-Control-Allow-Headers", "access-control-allow-origin, authority, content-type, version-info, X-Requested-With");

        // 调用过滤器链的doFilter方法,将请求和响应对象传入
        filterChain.doFilter(servletRequest, servletResponse);
    }
}

2、NewsUserController

java 复制代码
package com.csdn.headline.controller;
import com.csdn.headline.common.Result;
import com.csdn.headline.common.ResultCodeEnum;
import com.csdn.headline.pojo.NewsUser;
import com.csdn.headline.service.NewsUserService;
import com.csdn.headline.util.MD5Util;
import com.csdn.mymvc.annotation.*;
@Controller
@RequestMapping("/user")
public class NewsUserController {
    @Autowire
    private NewsUserService newsUserService;
    /**
     * 登录方法
     * @param newsUser 用户信息
     * @return 登录结果
     */
    @PostMapping("/login")
    public Result<NewsUser> login(@RequestBody NewsUser newsUser) {
        // 根据用户名从数据库中获取用户信息
        NewsUser newsUserFromDB = newsUserService.getNewsUserByUserName(newsUser.getUsername());

        // 如果数据库中没有找到对应用户名的用户信息,则返回登录失败的结果
        if (newsUserFromDB == null) {
            return Result.build(null, ResultCodeEnum.USERNAME_ERROR);
        } else {
            // 获取数据库中用户密码
            String pwdFromDB = newsUserFromDB.getUserPwd();

            // 对输入的密码进行加密
            String yourPwd = MD5Util.encrypt(newsUser.getUserPwd());

            // 如果加密后的密码与数据库中的密码不一致,则返回登录失败的结果
            if (!yourPwd.equals(pwdFromDB)) {
                return Result.build(null, ResultCodeEnum.PASSWORD_ERROR);
            } else {
                // 清空数据库中用户的密码,完成登录并返回用户信息
                newsUserFromDB.setUserPwd(null);
                return Result.ok(newsUserFromDB);
            }
        }
    }
}

3、NewsUserServiceImpl

java 复制代码
package com.csdn.headline.service.impl;
import com.csdn.headline.dao.NewsUserDao;
import com.csdn.headline.pojo.NewsUser;
import com.csdn.headline.service.NewsUserService;
import com.csdn.mymvc.annotation.Autowire;
import com.csdn.mymvc.annotation.Service;
@Service
public class NewsUserServiceImpl implements NewsUserService {
    @Autowire
    private NewsUserDao newsUserDao;
    /**
     * 根据用户名获取对应的NewsUser对象
     * @param userName 用户名
     * @return 对应的NewsUser对象
     */
    @Override
    public NewsUser getNewsUserByUserName(String userName) {
        return newsUserDao.getNewsUserByUserName(userName);
    }
}

4、NewsUserDaoImpl

java 复制代码
package com.csdn.headline.dao.impl;
import com.csdn.headline.dao.NewsUserDao;
import com.csdn.headline.pojo.NewsUser;
import com.csdn.mymvc.annotation.Repository;
import com.csdn.mymvc.dao.BaseDao;
@Repository
public class NewsUserDaoImpl extends BaseDao<NewsUser> implements NewsUserDao {
    @Override
    public NewsUser getNewsUserByUserName(String userName) {
        // 根据用户名查询对应的NewsUser对象
        String sql = "select uid,username,user_pwd as userPwd,nick_name as nickName from news_user where username =?";
        return load(sql, userName);
    }
}
相关推荐
程序员小远4 天前
自动化测试基础知识总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
LT10157974444 天前
2026年Web自动化测试工具选型指南:多浏览器兼容解决方案
前端·测试工具·自动化
程序员三藏5 天前
Web自动化测试详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
专业机床数据采集5 天前
基于 Wireshark 抓包逆向设备通信协议,并用 C# UDP协议跨平台 实现宝元数控程序列表读取、上传、下载和删除
网络·测试工具·wireshark·程序传输·宝元数控·dnc·数控程序传输
程序员龙叔5 天前
从 0 开始学习 AI 测试 - 从接口测试来教你如何用 AI 来生成自动化测试代码
自动化测试·软件测试·python·软件测试工程师·测试工具·性能测试·ai测试
Saniffer_SH5 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
川石课堂软件测试5 天前
APP自动化测试|高级手势操作&toast操作
css·功能测试·测试工具·microsoft·fiddler·单元测试·harmonyos
LT10157974445 天前
2026年开源自动化测试工具选型指南:功能与适用场景解析
测试工具·开源·自动化
大叔带刺6 天前
AutoSAR SomeIP配置开发速成_02测试工具开发
测试工具·someip