案例 - 登录认证:保障系统安全访问的实现

news/2025/5/19 5:57:43

摘要:本文介绍了为Tlias智能学习辅助系统添加登录认证功能的过程,涵盖从需求分析、接口文档设计,到思路分析、功能开发以及最后的测试等多个关键环节,旨在实现只有通过登录认证的用户才能安全访问后台系统功能的目标。

关键词:登录认证;JWT令牌;用户验证
参考资料:黑马程序员day12 完整项目请从第10天开始看

一、引言

在完成部门管理和员工管理的基本功能后,系统存在安全隐患,即未登录状态下可直接访问后台。为解决这一问题,引入登录认证功能,确保用户必须登录后才能访问后台系统功能。

二、登录功能

2.1 需求

用户在登录界面输入用户名和密码,点击“登录”按钮后,系统向服务器发送请求。服务器需判断用户输入的用户名和密码是否正确,若正确则返回成功结果,前端页面跳转至系统首页面。

2.2 接口文档

参照以下接口文档进行登录功能开发:

  • 基本信息
    • 请求路径:/login
    • 请求方式:POST
    • 接口描述:该接口用于员工登录Tlias智能学习辅助系统,登录成功后,系统下发JWT令牌。
  • 请求参数
    • 参数格式:application/json
    • 参数说明:
名称类型是否必须备注
usernamestring必须用户名
passwordstring必须密码

请求数据样例:

{"username": "jinyong","password": "123456"
}
  • 响应数据
    • 参数格式:application/json
    • 参数说明:
名称类型是否必须默认值备注其他信息
codenumber必须响应码, 1 成功 ; 0 失败
msgstring非必须提示信息
datastring必须返回的数据, jwt令牌

响应数据样例:

{"code": 1,"msg": "success","data": "eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoi6YeR5bq4IiwiaWQiOjEsInVzZXJuYW1lIjoiamlueW9uZyIsImV4cCI6MTY2MjIwNzA0OH0.KkUc_CXJZJ8Dd063eImx4H9Ojfrr6XMJ-yVzaWCVZCo"
}

2.3 思路分析

登录服务端的核心逻辑为接收前端请求传递的用户名和密码,依据此在数据库中查询用户信息。若能查询到用户信息,表明用户输入的用户名和密码正确;若未查询到,则说明输入有误。

2.4 功能开发

  • LoginController
@RestController
public class LoginController {@Autowiredprivate EmpService empService;@PostMapping("/login")public Result login(@RequestBody Emp emp){Emp e = empService.login(emp);return  e != null? Result.success():Result.error("用户名或密码错误");}
}
  • EmpService
public interface EmpService {/*** 用户登录* @param emp* @return*/public Emp login(Emp emp);//省略其他代码...
}
  • EmpServiceImpl
@Slf4j
@Service
public class EmpServiceImpl implements EmpService {@Autowiredprivate EmpMapper empMapper;@Overridepublic Emp login(Emp emp) {//调用dao层功能:登录Emp loginEmp = empMapper.getByUsernameAndPassword(emp);//返回查询结果给Controllerreturn loginEmp;}   //省略其他代码...
}
  • EmpMapper
@Mapper
public interface EmpMapper {@Select("select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time " +"from emp " +"where username=#{username} and password =#{password}")public Emp getByUsernameAndPassword(Emp emp);//省略其他代码...
}

2.5 测试

  1. 功能开发完成后:启动服务,利用Postman进行测试。发起POST请求,访问http://localhost:8080/login。若Postman测试通过,表明后端登录功能基本正常。
  2. 前后端联调测试:退出系统,进入登录页面。在登录页面输入账户密码,若登录成功后能进入后台管理系统页面,则说明前后端联调成功,登录功能整体可用。
文章来源:https://blog.csdn.net/weixin_53197693/article/details/147248548
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-5497358.html

相关文章

智慧城市:如同为城市装上智能大脑,开启智慧生活

智慧城市的概念随着信息技术的飞速发展而逐渐兴起,它通过集成物联网、大数据、人工智能和数字孪生等先进技术,为城市管理和居民生活带来了前所未有的智能化变革。本文将深入探讨这些核心技术及其在智慧城市的典型应用场景,展示智慧城市如何提…

如何解决服务器文件丢失或损坏的问题?

# 服务器文件丢失或损坏问题的全面解决方案 ## 一、立即响应措施 ### 1. 停止写入操作 bash # 立即停止相关服务防止进一步覆盖 systemctl stop affected-service # 必要时将文件系统挂载为只读 mount -o remount,ro /affected_directory ### 2. 评估损坏范围 bash # 检查…

关于我的服务器

最近我买了台腾讯云服务器,然后新手小白只会用宝塔。。。 安装完之后默认的端口是8888,打开面板就会提示我有风险。然后 我改了端口之后,怎么都打不开。 于是 学到了几句命令可以使用: //查看端口是否已经修改成功 cat www/se…

flutter doctor 信号号超时

报错如下: :\Users\Administrator>flutter doctor Doctor summary (to see all details, run flutter doctor -v): [√] Flutter (Channel stable, 3.27.4, on Microsoft Windows [版本 10.0.22631.5189], locale zh-CN) [√] Windows Version (Installed versi…

网络的起点:深入解析计算机网络中的网络接口层

一、什么是网络接口层? 计算机网络的 网络接口层(Network Interface Layer),在 TCP/IP模型 中处于最底层,负责将数据从计算机传输到物理网络媒介,并在此基础上确保数据的正确传输。它位于数据链路层和物理…

在IDEA里面建立maven项目(便于java web使用)

具体步骤: 第一次有的电脑你再创建项目的时候右下角会提醒你弹窗:让你下载没有的东西 一定要下载!!可能会很慢 运行结果: 因为他是默认的8080端口所以在运行的时候输入的url如下图: 新建了一个controller代…

ERR_PNPM_DLX_NO_BIN No binaries found in tailwindcss

场景复现: 最近在vue3项目中安装了tailwindcss,但是它默认帮我安装的版本是4XX的,导致我执行 npx tailwindcss init -p报错了。 解决方案: 更改tailwindcss的版本为3 pnpm add -D tailwindcss3再次执行生成tailwindcss的初始…

golang使用stdio与子进程进行通信

在使用Cline调用本地MCP Server的时候,使用的是STDIO模式,也就是Cline启动一个子进程来运行MCP Server,然后通过STDIO来进行通信。这种方式即高效又安全。 import ("bufio""fmt""io""os/exec""…

每日文献(十三)——Part one

今天看的是《RefineNet: Iterative Refinement for Accurate Object Localization》。 目录 零、摘要 0.1 原文 0.2 译文 一、介绍 二、RefineNet A. Fast R-CNN B. Faster R-CNN C. RefineNet 训练 D. RefineNet 测试 零、摘要 0.1 原文 We investigate a new str…

MySQL——存储

一、什么是存储过程 存储过程(Stored Procedure) 是预编译并存储在数据库中的一段SQL代码集合,支持参数传递、流程控制和返回值。通过类似“方法调用”的方式执行,存储过程将复杂业务逻辑封装在数据库层,简化应用开发…