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

摘要:本文介绍了为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. 前后端联调测试:退出系统,进入登录页面。在登录页面输入账户密码,若登录成功后能进入后台管理系统页面,则说明前后端联调成功,登录功能整体可用。
相关推荐
小程序设计1 小时前
Easy-Shop商城小程序漏洞挖掘与防护研究
网络·安全
2601_966377133 小时前
等保2.0最新标准新增安全数据处理要求后怎么办?等保一体机数据安全模块来助力
运维·网络·安全·等保一体机
执念WRD3 小时前
Fastjson 1.2.83 RCE 漏洞利用
网络·安全·网络安全
xixiaoyunya3 小时前
局域网多电脑文件互备:从传统痛点到自动化方案的技术路径
网络·安全
yume_sibai4 小时前
11-Rust 不安全编程(unsafe 关键字 + 裸指针 + FFI + 内联汇编 + 内存安全保证)
汇编·安全·rust
AngusKit4 小时前
开源扫描器拼盘 vs AngusSecurity
安全·安全性测试·代码安全·漏洞检测·trivy·安全扫描·gitleaks
山东科恩光电4 小时前
安全触边在自动化设备中的应用与风险控制方案分析
安全
汇智信科4 小时前
企业综合信息门户设计:基于 CMS 扩展的全要素内容与知识生态方案
安全·汇智信科·hsim·fastclaw·汇智龙虾
网易易盾5 小时前
应用加固如何应对AI辅助逆向?从单点防护到持续对抗
人工智能·安全