最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java后端登錄功能如何實(shí)現(xiàn)

這篇文章主要講解了“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ā)展。

一. 登錄需求分析

頁面原型

Java后端登錄功能如何實(shí)現(xiàn)

1. 登錄頁面展示:項(xiàng)目路徑(\resources\backend\page\login\login.html)

Java后端登錄功能如何實(shí)現(xiàn)

員工點(diǎn)擊登錄按鈕進(jìn)行后管平臺(tái)的登錄操作,登錄正確以外方式不可登錄。

登錄處理邏輯

Java后端登錄功能如何實(shí)現(xiàn)

  • 將頁面提交的密碼進(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 ServiceImpl implements 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 R login(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):

  1. 用戶名與密碼的校驗(yàn)

  2. 用戶狀態(tài)禁用情況下

  3. 數(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