惊讶的chatGPT - 测试写一个sso

chatGPT火了这么久,终于自己试了试,真的有点被惊艳!!!!

我用它做了个实验

1、让他写一个代码

我的第一个要求是

当然,他给出了代码。

# 定义一个字典用于存储用户名和密码
users = {'user1': 'password1', 'user2': 'password2', 'user3': 'password3'}

# 定义一个函数用于验证用户输入的用户名和密码是否正确
def login():
    username = input('请输入用户名:')
    password = input('请输入密码:')
    if username in users and password == users[username]:
        print('登录成功!')
    else:
        print('用户名或密码错误,请重新输入。')

# 调用函数进行登录验证
login()

因为我是Java开发,python不太懂,所以让换成了Java,他给出了java 版本

import java.util.HashMap;
import java.util.Scanner;

public class Login {

    public static void main(String[] args) {
        // 定义一个HashMap用于存储用户名和密码
        HashMap<String, String> users = new HashMap<>();
        users.put("user1", "password1");
        users.put("user2", "password2");
        users.put("user3", "password3");

        // 调用login()方法进行登录验证
        login(users);
    }

    // 定义一个方法用于验证用户输入的用户名和密码是否正确
    public static void login(HashMap<String, String> users) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入用户名:");
        String username = input.nextLine();
        System.out.print("请输入密码:");
        String password = input.nextLine();
        if (users.containsKey(username) && users.get(username).equals(password)) {
            System.out.println("登录成功!");
        } else {
            System.out.println("用户名或密码错误,请重新输入。");
            login(users);  // 用户名或密码错误时重新调用login()方法进行登录验证
        }
    }
}

优化代码

这很简单,然后我让他优化

他能很好的识别我的意思,并且用了spring框架

UserController.java:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("/login")
    public String login(@RequestBody User user) {
        boolean isValidUser = userService.validateUser(user.getUsername(), user.getPassword());
        if (isValidUser) {
            return "登录成功!";
        } else {
            return "用户名或密码错误,请重新输入。";
        }
    }
}




UserService.java:

import org.springframework.stereotype.Service;
import java.util.HashMap;

@Service
public class UserService {

    private static HashMap<String, String> users = new HashMap<>();
    static {
        users.put("user1", "password1");
        users.put("user2", "password2");
        users.put("user3", "password3");
    }

    public boolean validateUser(String username, String password) {
        if (users.containsKey(username) && users.get(username).equals(password)) {
            return true;
        } else {
            return false;
        }
    }
}

 这一步已经很厉害了。我想我们平时不会这么写,肯定是要用参数去接的,所以给提了新的意见

他直接更新了代码,我觉得,这可以直接用了!!!!

UserController.java:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("/login")
    public String login(@RequestParam("username") String username, @RequestParam("password") String password) {
        boolean isValidUser = userService.validateUser(username, password);
        if (isValidUser) {
            return "登录成功!";
        } else {
            return "用户名或密码错误,请重新输入。";
        }
    }
}


UserService.java:

import org.springframework.stereotype.Service;
import java.util.HashMap;

@Service
public class UserService {

    private static HashMap<String, String> users = new HashMap<>();
    static {
        users.put("user1", "password1");
        users.put("user2", "password2");
        users.put("user3", "password3");
    }

    public boolean validateUser(String username, String password) {
        if (users.containsKey(username) && users.get(username).equals(password)) {
            return true;
        } else {
            return false;
        }
    }
}

 后续我还试了让记录日志、保存数据库等操作,一个sso直接被写出来了。

猜你喜欢

转载自blog.csdn.net/qq_37761711/article/details/130002041
今日推荐