0
点赞
收藏
分享

微信扫一扫

Java实现的登录注册功能

首先创建User.java

public class User {
    private String username;
    private String encryptedPassword;
    
    public User(String username, String password) {
        this.username = username;
        this.encryptedPassword = encryptPassword(password);
    }
    
    private String encryptPassword(String password) {
        return BCrypt.hashpw(password, BCrypt.gensalt());
    }
    
    // Getters and setters...
}

UserDAO.java

 java.util.HashMap;
import java.util.Map;

public class UserDAO {
    private static final Map<String, User> users = new HashMap<>();
    
    public boolean register(User user) {
        if (users.containsKey(user.getUsername())) {
            return false;
        }
        users.put(user.getUsername(), user);
        return true;
    }
    
    public boolean login(String username, String password) {
        User user = users.get(username);
        return user != null && BCrypt.checkpw(password, user.getEncryptedPassword());
    }
}

登录注册逻辑Main.java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        UserDAO userDAO = new UserDAO();
        Scanner scanner = new Scanner(System.in);
        
        while (true) {
            System.out.println("1.注册 2.登录 3.退出");
            int choice = scanner.nextInt();
            scanner.nextLine(); // 清除换行符
            
            switch (choice) {
                case 1:
                    System.out.print("输入用户名: ");
                    String regUsername = scanner.nextLine();
                    System.out.print("输入密码: ");
                    String regPassword = scanner.nextLine();
                    if (userDAO.register(new User(regUsername, regPassword))) {
                        System.out.println("注册成功");
                    } else {
                        System.out.println("用户名已存在");
                    }
                    break;
                    
                case 2:
                    System.out.print("用户名: ");
                    String loginUsername = scanner.nextLine();
                    System.out.print("密码: ");
                    String loginPassword = scanner.nextLine();
                    if (userDAO.login(loginUsername, loginPassword)) {
                        System.out.println("登录成功");
                    } else {
                        System.out.println("用户名或密码错误");
                    }
                    break;
                    
                case 3:
                    System.exit(0);
            }
        }
    }
}

此实现包含内存存储、BCrypt密码加密和基础交互逻辑。实际应用需替换UserDAO为数据库操作,并添加异常处理。依赖库需添加jBCrypt实现密码加密。

举报

相关推荐

0 条评论