微信小程序入门05-用户登录注册接口开发

简介: 微信小程序入门05-用户登录注册接口开发

用户登录注册,我们先需要开发后端的接口,接口一般需要有入参,然后和数据库进行交互。


1 创建表


我们现在先实现用户的登录及注册,建表语句

create database diancan;
use diancan;
CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  password VARCHAR(255) NOT NULL
);


连上Mysql在命令行里执行脚本


2 创建后端文件


我们现在要想后端的文件在哪里放,大型项目可能是前后端分离,各有各的目录,因为我们这个是练手项目,就和前端的项目放到一起就可以


vscode里打开我们的前端脚手架项目,在src下边增加一个server文件夹,里边创建一个server.js文件

输入如下代码

const express = require('express');
const mysql = require('mysql');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');
const app = express();
const port = 3000;
// 连接数据库
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '111111',
    database: 'diancan'
});
// 解析请求体
app.use(bodyParser.json());
// 注册接口
app.post('/register', (req, res) => {
    const { username, password } = req.body;
    connection.query('INSERT INTO users SET ?', { username, password }, (err, result) => {
        if (err) {
            console.error(err);
            res.status(500).send('Server Error');
        } else {
            res.send('Register Success');
        }
    });
});
// 登录接口
app.post('/login', (req, res) => {
    const { username, password } = req.body;
    connection.query('SELECT * FROM users WHERE username = ?', username, (err, results) => {
        if (err) {
            console.error(err);
            res.status(500).send('Server Error');
        } else if (results.length === 0) {
            res.status(401).send('User Not Found');
        } else if (results[0].password !== password) {
            res.status(401).send('Password Incorrect');
        } else {
            const token = jwt.sign({
                userId: results[0].id,
                username: results[0].username
            }, 'secret');
            res.send({ token });
        }
    });
});
// 权限验证中间件
const authMiddleware = (req, res, next) => {
    const authHeader = req.header('Authorization');
    if (authHeader) {
        const token = authHeader.replace('Bearer ', '');
        try {
            const decoded = jwt.verify(token, 'secret');
            req.userId = decoded.userId;
            req.username = decoded.username;
            next();
        } catch (err) {
            res.status(401).send('Invalid Token');
        }
    } else {
        res.status(401).send('Unauthorized');
    }
};
// 需要授权的接口
app.get('/protected', authMiddleware, (req, res) => {
    res.send(`Hello, ${req.username}`);
});
app.get('/', (req, res) => {
    res.send('Hello, World!');
});
//const userRouter = require('./userRouter');
//app.use('/', userRouter);
// 启动服务器
app.listen(port, () => {
    console.log(`Server listening at http://localhost:${port}`);
});


3 安装依赖


nodejs里凡是使用require语句的,先需要安装npm包,我们一共使用了四个包

const express = require('express');
const mysql = require('mysql');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');


安装方法是进入到项目的根目录

在根目录打开cmd,然后输入安装命令

npm install express mysql jsonwebtoken --save

安装完毕后可以去node_modules里查看包是否安装正常


4 启动服务


进入到我们的server文件夹,打开cmd,使用如下命令启动服务


node server.js

可以看到服务已经正常启动


5 接口测试


后端接口编写完毕后,我们需要测试一下接口是否正常,可以使用PostMan来测试


从网络上下载并且安装,我们可以先创建一个collection

collection创建好之后,可以建一个request

首先测试一下注册接口是否正常,接口地址

http://localhost:3000/register

方法选择POST,然后切换到Body页签,我们按照JSON格式传入参数

{
    "username":"test",
    "password":"111111"
}


填写好之后点击send,如果一切正常会返回注册成功的提示


接着测试一下登录接口


http://localhost:3000/login

登录接口测试成功后会返回一个token


接着测试权限验证接口


http://localhost:3000/protected

传入我们的token成功返回结果


6 处理数据库执行不成功的问题


我们如果按照默认配置安装数据库,在首次测试接口的时候后台会报错,主要是因为客户端的密码验证协议和mysql服务端不匹配造成的,需要修改一下


登录到mysql后执行如下命令


ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你自己的密码';

然后提交更新

FLUSH PRIVILEGES;


总结


我们本篇主要是解决后端接口的问题,登录注册接口有了之后就需要改造我们的前端,在用户输入用户名密码的时候调用后端接口,验证成功之后进入到我们的系统主页。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3月前
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
存储 JSON 小程序
微信小程序入门之新建并认识小程序结构
微信小程序入门之新建并认识小程序结构
239 1
|
9月前
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
6061 11
|
JSON 小程序 前端开发
创建一个属于自己的小程序(注册开发账号)
介绍如何创建微信小程序账号,包括注册流程、下载安装微信开发者工具、创建项目以及项目结构介绍。
创建一个属于自己的小程序(注册开发账号)
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
355 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
XML 小程序 JavaScript
小程序入门之项目配置说明和数据绑定
小程序入门之项目配置说明和数据绑定
159 1
|
小程序
微信小程序的注册流程
微信小程序的注册流程
860 0
|
小程序 前端开发 JavaScript
小程序入门之认识view和text组件
小程序入门之认识view和text组件
287 0
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
3184 7
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
2878 1