Java后端登录功能怎么实现
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,本篇内容介绍了"Java后端登录功能怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一. 登录
千家信息网最后更新 2025年02月19日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安全错误
数据库的锁怎样保障安全
网站服务器空间多大合适
崇明区工业软件开发诚信服务
海康服务器硬盘蓝色灯亮
便宜的数据库水印溯源
atrust服务器地址连不上
小米平板显示服务器错误
多媒体数据库的思维导图
如何安装数据库sql2012
手机版原神中的服务器如何更改
erp mes 用什么软件开发
多梦网络安全插画
tftp服务器配置
excel直连数据库分页
32岁可以从事网络安全吗
阿里云服务器按量计费
山东通用软件开发服务电话
清华大学数据库技术及应用
小白测评信号数据库
如何将shp文件导入数据库
点我网络技术有限公司
数据库营销的内容包括
软件开发需要投资什么
erp mes 用什么软件开发
永伯乐网络技术
学生网络安全教学视频
爱琳网络技术服务中心
微信有网络安全中心
文山软件开发专业培训
方舟手游怎么分享服务器
数据库大批量的添加数据