新聞中心
這篇文章主要講解了“Java后端登錄功能如何實(shí)現(xiàn)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java后端登錄功能如何實(shí)現(xiàn)”吧!
目前創(chuàng)新互聯(lián)已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、孝義網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
一. 登錄需求分析
頁面原型
1. 登錄頁面展示:項(xiàng)目路徑(\resources\backend\page\login\login.html)
員工點(diǎn)擊登錄按鈕進(jìn)行后管平臺(tái)的登錄操作,登錄正確以外方式不可登錄。
登錄處理邏輯
將頁面提交的密碼進(jìn)行MD5加密
根據(jù)用戶名查數(shù)據(jù)庫(查不到返回結(jié)果)
比對(duì)密碼(密碼錯(cuò)誤返回結(jié)果)
查詢員工狀態(tài),員工狀態(tài)禁用下不可登錄
登錄成功,寫入session中,返回結(jié)果。
二. 配置返回通用結(jié)果類
package com.itheima.reggie.common; import lombok.Data; import java.util.HashMap; import java.util.Map; /** * 返回通用類 * @author jekong * @date 2022/4/22 */ @Data public class R{ /** 編碼:1成功,0和其它數(shù)字為失敗*/ private Integer code; /** 信息返回*/ private String msg; /** 信息返回?cái)?shù)據(jù)*/ private T data; /** 動(dòng)態(tài)數(shù)據(jù)*/ 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; } }
三. 登錄請(qǐng)求API
說明 | 值 |
請(qǐng)求URL | /employee/login |
請(qǐng)求數(shù)據(jù) | { "username": "admin", "password": "123456" } |
返回?cái)?shù)據(jù) | { "code": 0, "msg": "登錄成功", "data": null, "map": {} } |
四. 創(chuàng)建實(shí)體類并實(shí)現(xiàn)登錄邏輯
entity: 創(chuàng)建實(shí)體類
創(chuàng)建Employee.java(員工對(duì)象)
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; /** * 員工實(shí)體類 * @author jektong * @date 2022/4/21 */ @Data public class Employee implements Serializable { /** 序列號(hào)*/ private static final long serialVersionUID = 1L; /**唯一主鍵*/ private Long id; /**用戶名*/ private String username; /**姓名*/ private String name; /**密碼*/ private String password; /**電話*/ private String phone; /**性別*/ private String sex; /**身份證號(hào)碼*/ private String idNumber; /**狀態(tài)*/ private Integer status; /**創(chuàng)建時(shí)間*/ private LocalDateTime createTime; /**更新時(shí)間*/ private LocalDateTime updateTime; /**添加用戶時(shí)使用*/ @TableField(fill = FieldFill.INSERT) private Long createUser; /**更新用戶時(shí)使用*/ @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateUser; }
mapper數(shù)據(jù)庫交互層
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 */ @Mapper public interface EmployeeMapper extends BaseMapper{ }
service業(yè)務(wù)層接口
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{ }
業(yè)務(wù)層實(shí)現(xiàn)類
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 */ @Service public 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; /** * 登錄請(qǐng)求處理 * TODO 后續(xù)改進(jìn)將業(yè)務(wù)處理的代碼放入業(yè)務(wù)層,這里只做數(shù)據(jù)請(qǐng)求與返回 * @param request * @param employee * @return */ @PostMapping("/login") public Rlogin(HttpServletRequest request, @RequestBody Employee employee) { // 將頁面提交的密碼進(jìn)行MD5加密 String password = employee.getPassword(); password = DigestUtils.md5DigestAsHex(password.getBytes()); // 根據(jù)用戶名查數(shù)據(jù)庫 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper (); queryWrapper.eq(Employee::getUsername, employee.getUsername()); Employee emp = employeeService.getOne(queryWrapper); // 查不到返回登錄失敗結(jié)果 if(emp == null){ return R.error(CommonsConst.LOGIN_FAIL); } // 比對(duì)密碼 if(!emp.getPassword().equals(password)){ return R.error(CommonsConst.LOGIN_FAIL); } // 查看員工狀態(tài) 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測試時(shí)主要測試以下幾點(diǎn):
用戶名與密碼的校驗(yàn)
用戶狀態(tài)禁用情況下
數(shù)據(jù)是否正確返回
附錄
常量類:
package com.itheima.reggie.common; /** * 常量定義 * @author jektong * @date 2022/4/23 */ public class CommonsConst { // 登錄失敗 public static final String LOGIN_FAIL = "登錄失敗"; // 賬號(hào)禁用 public static final String LOGIN_ACCOUNT_STOP = "賬號(hào)禁止使用"; // 員工賬號(hào)禁用狀態(tài) 0:禁用 public static final Integer EMPLOYEE_STATUS_NO = 0; // 員工賬號(hào)正常狀態(tài) 1:正常使用 public static final Integer EMPLOYEE_STATUS_YES = 1; }
感謝各位的閱讀,以上就是“Java后端登錄功能如何實(shí)現(xiàn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Java后端登錄功能如何實(shí)現(xiàn)這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
網(wǎng)站名稱:Java后端登錄功能如何實(shí)現(xiàn)
URL地址:http://fisionsoft.com.cn/article/josdjp.html