Heim > Java > javaLernprogramm > So implementieren Sie die Java-Backend-Anmeldefunktion

So implementieren Sie die Java-Backend-Anmeldefunktion

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2023-05-04 23:25:13
nach vorne
1896 Leute haben es durchsucht

1. Analyse der Anmeldeanforderungen

Seitenprototyp#

So implementieren Sie die Java-Backend-Anmeldefunktion

1. Anzeige der Anmeldeseite: Projektpfad (Ressourcenbackendpagelogin.) html)

So implementieren Sie die Java-Backend-Anmeldefunktion

Mitarbeiter klicken auf die Anmeldeschaltfläche, um sich bei der Back-End-Verwaltungsplattform anzumelden. Eine Anmeldung ist nur möglich, wenn die Anmeldung korrekt ist.

Login-Verarbeitungslogik

So implementieren Sie die Java-Backend-Anmeldefunktion

  • Verschlüsseln Sie das auf der Seite übermittelte Passwort mit MD5#🎜 🎜 #

  • Überprüfen Sie die Datenbank anhand des Benutzernamens (kein Ergebnis zurückgegeben)
  • Vergleichen Sie das Passwort (Ergebnis zurückgegeben, wenn das Passwort ist falsch)
  • Mitarbeiterstatus abfragen, Sie können sich nicht anmelden, wenn der Mitarbeiterstatus deaktiviert ist
  • #🎜 🎜#Login erfolgreich, in die Sitzung schreiben, Ergebnisse zurückgeben. Nr. ?? 🎜 #
  • Daten anfordern

  • {
"Benutzername": "admin",

"Passwort": "123456"#🎜🎜 #}

Daten zurückgeben{ "msg": "Anmeldung erfolgreich ", "map": {}} 4. Erstellen Entitätsklasse und Implementierung der Anmeldelogikentity: Entitätsklasse erstellenEmployee.java (Mitarbeiterobjekt) erstellenBusiness-Layer-Implementierungsklasse
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<Employee> {
}
Nach dem Login kopieren
Controller-Kontrollschicht5. 🎜🎜##🎜🎜 # Wenn der Benutzerstatus deaktiviert ist
"code": 0, "data": null,
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<T> {
    /** 编码:1成功,0和其它数字为失败*/
    private Integer code;
    /** 信息返回*/
    private String msg;
    /** 信息返回数据*/
    private T data;
    /** 动态数据*/
    private Map map = new HashMap();
    public static <T> R<T> success(T object) {
        R<T> r = new R<T>();
        r.data = object;
        r.code = 1;
        return r;
    }
    public static <T> R<T> error(String msg) {
        R r = new R();
        r.msg = msg;
        r.code = 0;
        return r;
    }
    public R<T> add(String key, Object value) {
        this.map.put(key, value);
        return this;
    }
}
Nach dem Login kopieren

Mapper-Datenbank-Interaktionsebene#🎜 🎜#
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
 */
@Data
public 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;
}
Nach dem Login kopieren

Service-Business-Layer-Schnittstelle
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<Employee> {
}
Nach dem Login kopieren
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<EmployeeMapper, Employee> implements EmployeeService {
}
Nach dem Login kopieren
Die folgenden Punkte werden hauptsächlich während des Debug-Tests getestet:



Verifizierung von Benutzername und Passwort

Ob die Daten korrekt zurückgegeben werden

Anhang# 🎜🎜 #

Konstante Klasse:

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 R<Employee> login(HttpServletRequest request,
                             @RequestBody Employee employee) {
        // 将页面提交的密码进行MD5加密
        String password = employee.getPassword();
        password = DigestUtils.md5DigestAsHex(password.getBytes());
        // 根据用户名查数据库
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<Employee>();
        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);
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Java-Backend-Anmeldefunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Kann Java als Backend des Webs verwendet werden?
Aus 1970-01-01 08:00:00
0
0
0
Installieren Sie JAVA
Aus 1970-01-01 08:00:00
0
0
0
Java kann nicht installiert werden
Aus 1970-01-01 08:00:00
0
0
0
Ist das in der Java-Sprache?
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage