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

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

关键词 :登录认证;JWT令牌;用户验证

参考资料:黑马程序员day12 完整项目请从第10天开始看

一、引言

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

二、登录功能

2.1 需求

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

2.2 接口文档

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

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

请求数据样例:

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

响应数据样例:

json 复制代码
{
    "code": 1,
    "msg": "success",
    "data": "eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoi6YeR5bq4IiwiaWQiOjEsInVzZXJuYW1lIjoiamlueW9uZyIsImV4cCI6MTY2MjIwNzA0OH0.KkUc_CXJZJ8Dd063eImx4H9Ojfrr6XMJ-yVzaWCVZCo"
}

2.3 思路分析

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

2.4 功能开发

  • LoginController
java 复制代码
@RestController
public class LoginController {

    @Autowired
    private EmpService empService;

    @PostMapping("/login")
    public Result login(@RequestBody Emp emp){
        Emp e = empService.login(emp);
        return  e != null? Result.success():Result.error("用户名或密码错误");
    }
}
  • EmpService
java 复制代码
public interface EmpService {

    /**
     * 用户登录
     * @param emp
     * @return
     */
    public Emp login(Emp emp);

    //省略其他代码...
}
  • EmpServiceImpl
java 复制代码
@Slf4j
@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private EmpMapper empMapper;

    @Override
    public Emp login(Emp emp) {
        //调用dao层功能:登录
        Emp loginEmp = empMapper.getByUsernameAndPassword(emp);

        //返回查询结果给Controller
        return loginEmp;
    }   

    //省略其他代码...
}
  • EmpMapper
java 复制代码
@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. 前后端联调测试:退出系统,进入登录页面。在登录页面输入账户密码,若登录成功后能进入后台管理系统页面,则说明前后端联调成功,登录功能整体可用。
相关推荐
MOON404☾25 分钟前
003.端口扫描
网络·安全·web安全·网络安全·系统安全
-曾牛1 小时前
Yak:专注安全能力融合的编程语言快速入门
安全·网络安全·golang·渗透测试·编程语言·yakit·yak
dingchengyu1 小时前
web应用安全与加速
安全
橘颂TA1 小时前
线程池与线程安全:后端开发的 “性能 + 安全” 双维实践
java·开发语言·安全
梁辰兴1 小时前
中国信通院发布《人工智能安全治理研究报告(2025年)》,AI安全攻防为何“易攻难守“?
人工智能·安全·ai·ai安全·梁辰兴·人工智能安全治理·中国信通院
飞飞传输1 小时前
适配信创环境的传输系统推荐:助力企业数据安全合规传输!
大数据·运维·安全
●VON2 小时前
智能暗战:AI 安全攻防实战全景解析
人工智能·学习·安全·von
廋到被风吹走2 小时前
【Spring】Spring Boot Actuator 深度解析:健康检查、指标暴露与端点安全
spring boot·安全·spring
乐迪信息2 小时前
乐迪信息:防止船舶误入禁航区:AI偏航检测精准干预
大数据·运维·人工智能·物联网·安全
扑火的小飞蛾12 小时前
网络安全小白学习路线图 (基于提供文档库)
学习·安全·web安全