Java后端登录功能怎么实现
发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,本篇内容介绍了"Java后端登录功能怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一. 登录
千家信息网最后更新 2025年02月21日Java后端登录功能怎么实现
本篇内容介绍了"Java后端登录功能怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一. 登录需求分析
页面原型
1. 登录页面展示:项目路径(\resources\backend\page\login\login.html)
员工点击登录按钮进行后管平台的登录操作,登录正确以外方式不可登录。
登录处理逻辑
将页面提交的密码进行MD5加密
根据用户名查数据库(查不到返回结果)
比对密码(密码错误返回结果)
查询员工状态,员工状态禁用下不可登录
登录成功,写入session中,返回结果。
二. 配置返回通用结果类
package com.itheima.reggie.common;import lombok.Data;import java.util.HashMap;import java.util.Map;/** * 返回通用类 * @author jekong * @date 2022/4/22 */@Datapublic class R{ /** 编码:1成功,0和其它数字为失败*/ private Integer code; /** 信息返回*/ private String msg; /** 信息返回数据*/ private T data; /** 动态数据*/ private Map map = new HashMap(); public static R success(T object) { R r = new R (); r.data = object; r.code = 1; return r; } public static R error(String msg) { R r = new R(); r.msg = msg; r.code = 0; return r; } public R add(String key, Object value) { this.map.put(key, value); return this; }}
三. 登录请求API
说明 | 值 |
请求URL | /employee/login |
请求数据 | { "username": "admin", "password": "123456" } |
返回数据 | { "code": 0, "msg": "登录成功", "data": null, "map": {} } |
四. 创建实体类并实现登录逻辑
entity: 创建实体类
创建Employee.java(员工对象)
package com.itheima.reggie.entity;import com.baomidou.mybatisplus.annotation.FieldFill;import com.baomidou.mybatisplus.annotation.TableField;import lombok.Data;import java.io.Serializable;import java.time.LocalDateTime;/** * 员工实体类 * @author jektong * @date 2022/4/21 */@Datapublic class Employee implements Serializable { /** 序列号*/ private static final long serialVersionUID = 1L; /**唯一主键*/ private Long id; /**用户名*/ private String username; /**姓名*/ private String name; /**密码*/ private String password; /**电话*/ private String phone; /**性别*/ private String sex; /**身份证号码*/ private String idNumber; /**状态*/ private Integer status; /**创建时间*/ private LocalDateTime createTime; /**更新时间*/ private LocalDateTime updateTime; /**添加用户时使用*/ @TableField(fill = FieldFill.INSERT) private Long createUser; /**更新用户时使用*/ @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateUser;}
mapper数据库交互层
package com.itheima.reggie.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.itheima.reggie.entity.Employee;import org.apache.ibatis.annotations.Mapper;/** * EmployeeMapper * @author jektong * @date 2022/4/21 */@Mapperpublic interface EmployeeMapper extends BaseMapper{}
service业务层接口
package com.itheima.reggie.service;import com.baomidou.mybatisplus.extension.service.IService;import com.itheima.reggie.entity.Employee;import org.springframework.stereotype.Service;/** * @author jektong * @date 2022/4/21 */public interface EmployeeService extends IService{}
业务层实现类
package com.itheima.reggie.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.itheima.reggie.entity.Employee;import com.itheima.reggie.mapper.EmployeeMapper;import com.itheima.reggie.service.EmployeeService;import org.springframework.stereotype.Service;/** * @author jektong * @date 2022/4/21 */@Servicepublic class EmployeeServiceImpl extends ServiceImplimplements EmployeeService {}
controller控制层
package com.itheima.reggie.controller;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.itheima.reggie.common.CommonsConst;import com.itheima.reggie.common.R;import com.itheima.reggie.entity.Employee;import com.itheima.reggie.service.EmployeeService;import lombok.extern.slf4j.Slf4j;import org.springframework.util.DigestUtils;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;/** * 员工控制类 * * @author tongbing * @date 2022/4/21 */@Slf4j@RestController@RequestMapping("/employee")public class EmployeeController { @Resource private EmployeeService employeeService = null; /** * 登录请求处理 * TODO 后续改进将业务处理的代码放入业务层,这里只做数据请求与返回 * @param request * @param employee * @return */ @PostMapping("/login") public Rlogin(HttpServletRequest request, @RequestBody Employee employee) { // 将页面提交的密码进行MD5加密 String password = employee.getPassword(); password = DigestUtils.md5DigestAsHex(password.getBytes()); // 根据用户名查数据库 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper (); queryWrapper.eq(Employee::getUsername, employee.getUsername()); Employee emp = employeeService.getOne(queryWrapper); // 查不到返回登录失败结果 if(emp == null){ return R.error(CommonsConst.LOGIN_FAIL); } // 比对密码 if(!emp.getPassword().equals(password)){ return R.error(CommonsConst.LOGIN_FAIL); } // 查看员工状态 if(emp.getStatus() == CommonsConst.EMPLOYEE_STATUS_NO){ return R.error(CommonsConst.LOGIN_ACCOUNT_STOP); } // 登录成功将员工的ID放入session中 request.getSession().setAttribute("employeeId",emp.getId()); return R.success(emp); }}
五. 功能测试
Debug测试时主要测试以下几点:
用户名与密码的校验
用户状态禁用情况下
数据是否正确返回
附录
常量类:
package com.itheima.reggie.common;/** * 常量定义 * @author jektong * @date 2022/4/23 */public class CommonsConst { // 登录失败 public static final String LOGIN_FAIL = "登录失败"; // 账号禁用 public static final String LOGIN_ACCOUNT_STOP = "账号禁止使用"; // 员工账号禁用状态 0:禁用 public static final Integer EMPLOYEE_STATUS_NO = 0; // 员工账号正常状态 1:正常使用 public static final Integer EMPLOYEE_STATUS_YES = 1;}
"Java后端登录功能怎么实现"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
登录
员工
数据
密码
状态
用户
结果
成功
业务
用户名
账号
页面
功能
实体
数据库
处理
测试
信息
内容
常量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
班会培养网络安全意识小结
无人机用一般用什么软件开发
丰台区进口软件开发推荐
大连松下电器软件开发裁员了吗
基因数据库和健康管理系统
县开展网络安全周活动
java数据库适配器
舟山数据网络技术咨询热线
机房服务器维护与指导
原生图数据库的15条规则
vps配置邮件服务器
网络安全法四十四司法解释
重视网络安全防止网络沉迷标准语
网络安全排查和防护工作
湖北通讯软件开发价格服务标准
绝地求生2服务器加载失败
政府部门如何规范网络安全发展
网络安全net user
软件开发公司投资协议
临海管理软件开发
vb如何连接数据库
数据库技术三级考题
网络安全的危害以及预防
t100 数据库
河南通信软件开发服务推广
服务器在视频剪辑中的应用
服务器如何防毒
服务器操作系统价值
网络安全高级工程师年薪
猫王互联网科技是骗子吗