node koa2 实现登录

139 阅读1分钟

基于Koa2和MySQL的登录接口示例:

const Koa = require('koa');
const Router = require('koa-router');
const bodyParser = require('koa-bodyparser');
const mysql = require('mysql2/promise');

const app = new Koa();
const router = new Router();
const port = 3000;

// 创建数据库连接
const pool = mysql.createPool({
    host: '127.0.0.1', // 数据库的 IP 地址
    port: '3306', // 端口号,默认为 3306
    user: 'root', // 账号
    password: '123456', // 密码
    database: 'ck-test-db' // 指定要操作哪个数据库
});

// 登录接口
router.post('/login', async (ctx) => {
    const { username, password } = ctx.request.body;

    // 检查用户名和密码是否存在
    if (!username || !password) {
        ctx.status = 400;
        ctx.body = '用户名和密码不能为空';
        return;
    }

    // 查询数据库中是否有匹配的用户
    try {
        const connection = await pool.getConnection();
        const [rows] = await connection.query('SELECT * FROM users WHERE username = ? AND password = ?', [username, password]);
        connection.release();
        if (rows.length === 1) {
            ctx.body = '登录成功';
        } else {
            ctx.status = 401;
            ctx.body = '用户名或密码不正确';
        }
    } catch (error) {
        ctx.status = 500;
        ctx.body = '服务器错误';
        console.error(error);
    }

});

app.use(bodyParser());
app.use(router.routes());

app.listen(port, () => {
    console.log(`服务器已启动,端口号:${port}`);
});

这个示例代码创建了一个Koa应用,监听在3000端口。在路由中定义了一个POST请求的/login接口,接收一个包含用户名和密码的请求体,并且在MySQL中查询是否有匹配的用户。

需要注意的是,这个示例中的代码使用了mysql2/promise包来创建数据库连接和执行查询操作。该包支持异步操作和Promise,更加符合Node.js的异步编程模式。如果你使用的是mysql包或其他类似的包,需要根据包的使用方式进行调整。