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

news2024/11/23 9:33:27

1、CrosFilter

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

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

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

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);
    }
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1189753.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VR全景如何应用在房产行业,VR看房有哪些优势

导语&#xff1a; 在如今的数字时代&#xff0c;虚拟现实&#xff08;VR&#xff09;技术的迅猛发展为许多行业带来了福音&#xff0c;特别是在房产楼盘行业中。通过利用VR全景技术&#xff0c;开发商和销售人员可以为客户提供沉浸式的楼盘浏览体验&#xff0c;从而带来诸多优…

软件测试|Python Faker库使用指南

简介 Faker是一个Python库&#xff0c;用于生成虚假&#xff08;假的&#xff09;数据&#xff0c;用于测试、填充数据库、生成模拟数据等目的。它可以快速生成各种类型的虚假数据&#xff0c;如姓名、地址、电子邮件、电话号码、日期等&#xff0c;非常适合在开发和测试过程中…

phpstudy本地快速搭建网站,实现无公网IP外网访问

文章目录 [toc]使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点&#xff0c;测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中&#xff0c;查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2…

可恶的 TCP 加速

中午有朋友给我发来一个图片&#xff0c;早期 TCP 规范起草人&#xff0c;david reed 老爷子气坏了&#xff1a; 互联网本是一个以合作而共赢的网络&#xff0c;结果被一群损人不利己的自私的家伙以无知的方式将这基本原则破坏掉了。 我没有能力如此言简意赅且优雅地喷(jerks…

muduo源码剖析之TcpClient客户端类

简介 muduo用TcpClient发起连接&#xff0c;TcpClient有一个Connector连接器&#xff0c;TCPClient使用Conneccor发起连接, 连接建立成功后, 用socket创建TcpConnection来管理连接, 每个TcpClient class只管理一个TcpConnecction&#xff0c;连接建立成功后设置相应的回调函数…

MongoDB副本集特点验证

MongoDB副本集特点验证 mogodb副本集概述副本集搭建副本集结构验证结果源码地址 mogodb副本集概述 MongoDB副本集是将数据同步在多个服务器的过程。 复制提供了数据的冗余备份&#xff0c;并在多个服务器上存储数据副本&#xff0c;提高了数据的可用性&#xff0c; 并可以保证…

第一章:IDEA使用介绍

系列文章目录 文章目录 系列文章目录前言一、IDEA 的使用1.1 IDEA 工作界面1.2 IDEA 的基本介绍和使用1.3 IDEA 使用技巧和经验1.4 IDEA编译与源文件1.5 IDEA 常用快捷键1.6 IDEA模板/自定义模板 总结 前言 IDEA 全称 IntelliJ IDEA&#xff0c;在业界被公认为最好的 Java 开发…

经验模态分解(Empirical Mode Decomposition,EMD)(附代码)

代码原理 EMD&#xff08;Empirical Mode Decomposition&#xff09;&#xff0c;也称为经验模态分解&#xff0c;是一种将非线性和非平稳信号分解成多个本征模态函数&#xff08;Intrinsic Mode Functions&#xff0c;简称IMF&#xff09;的方法。 EMD的基本原理是通过一系列…

算法进阶指南图论 道路与航线

其实再次看这题的时候。想法就是和强连通分量有关&#xff0c;我们很容易发现&#xff0c;题目中所说的双向边&#xff0c;就构成了一个强连通分量&#xff0c;而所谓的单向边&#xff0c;则相当于把强连通分量进行缩点&#xff0c;然后整个图成为了一个DAG&#xff0c;众所周知…

把自己本地项目发布到Gitee

目录 1.准备工作 ​2.gitee创建仓库 3.本地上传代码 4.验证​ 1.准备工作 本地安装了git&#xff0c;公钥私钥都配置好了 2.gitee创建仓库 创建仓库&#xff0c;没有仓库放不了代码 只需要选择分支类型&#xff0c;和带星号的 进入下一页 点这个 3.本地上传代码 新建一…

vivado时序分析-1

AMD Vivado ™ 集成设计环境 (IDE) 提供了多项报告命令 &#xff0c; 用于验证设计是否满足所有时序约束 &#xff0c; 以及是否准备好加载到应用开发板上。“Report Timing Summary ” &#xff08; 时序汇总报告 &#xff09; 属于时序验收报告 &#xff0c; 等同于 ISE De…

链表OJ题(1)

今天讲解两道链表OJ题目。 1.链表的中间节点 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&#xff1a;链表只有一个…

1214. 波动数列

题目&#xff1a; 1214. 波动数列 - AcWing题库 思路&#xff1a;dp dp划分递归 转自&#xff1a; AcWing 1214. 波动数列&#xff08;有公式详细推导&#xff09; - AcWing 代码&#xff1a; #include <iostream> #include <cstring> #include <algori…

Java学习 8.Java-递归

一、递归的概念 引例&#xff1a; 一个方法在执行过程中调用自身&#xff0c;就称为递归&#xff08;函数自己调用自己&#xff09; 递归相当于数学的数学归纳法&#xff0c;有一个起始条件&#xff0c;有一个递推公式 递归的必要条件 1.将原问题划分为子问题&#xff0c;…

介绍两个好用又好玩的大模型工具

先让数字人跟大家打个招呼吧。 我的AI数字人会手语了 发现没&#xff0c;我的数字人本周又学了一个新技能&#xff1a;手语。 这些数字人都是通过AI生成的。 但数字人不是今天的主题&#xff0c;今天要跟大家聊聊大模型。 自从大模型出现后&#xff0c;很多人&#xff08;包…

2022年接口测试总结【温故知新系列】

本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xff1…

Centos批量删除系统重复进程

原创作者&#xff1a;运维工程师 谢晋 Centos批量删除系统重复进程 客户一台CENTOS 7系统负载高&#xff0c;top查看有很多sh的进程&#xff0c;输入命令top -c查看可以看到对应的进程命令是/bin/bash     经分析后发现是因为该脚本执行时间太长&#xff0c;导致后续执…

机器学习——奇异值分解案例(图片压缩未开始)

本想大迈步进入前馈神经网络 但是…唉…瞅了几眼&#xff0c;头晕 然后想到之前梳理的奇异值分解、主成分分析、CBOW都没有实战 如果没有实际操作&#xff0c;会有一种浮在云端的虚无感 但是如果要实际操作&#xff0c;我又不想直接调用库包 可是…如果不直接调包&#xff0c;感…

【深度学习】可交互讲解图神经网络GNN

在正式开始前&#xff0c;先找准图神经网络GNN(Graph Neural Network)的位置。 图神经网络GNN是深度学习的一个分支。 深度学习的四个分支对应了四种常见的数据格式&#xff0c;前馈神经网络FNN处理表格数据&#xff0c;表格数据可以是特征向量&#xff0c;卷积神经网络CNN处理…

基于SSM的楼房销售系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…