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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 微信小程序入门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;


总结


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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
小程序 程序员 开发工具
电商小程序05用户注册
电商小程序05用户注册
|
2月前
|
小程序 JavaScript 前端开发
培训报名小程序-用户注册
培训报名小程序-用户注册
|
2月前
|
JSON 小程序 JavaScript
微信小程序入门实践
微信小程序入门实践
|
2月前
|
小程序 前端开发 程序员
微信小程序开发入门教程-小程序账号注册及开通
微信小程序开发入门教程-小程序账号注册及开通
|
2月前
|
小程序 JavaScript 前端开发
微信小程序云开发入门实践
微信小程序云开发入门实践
|
2月前
|
小程序 JavaScript 容器
微信小程序入门学习02-TDesign中的自定义组件
微信小程序入门学习02-TDesign中的自定义组件
|
2月前
|
JSON 小程序 前端开发
微信小程序开发入门学习01-TDesign模板解读
微信小程序开发入门学习01-TDesign模板解读
|
2月前
|
小程序 数据可视化 开发者
微信小程序开发入门介绍-布局组件
微信小程序开发入门介绍-布局组件
|
2月前
|
存储 小程序 开发工具
一篇文入门微信小程序开发环境搭建
一篇文入门微信小程序开发环境搭建
|
10天前
|
存储 编解码 小程序
抖音小程序开发中遇见的坑点
在抖音小程序开发中,需注意10大坑点:遵守小程序限制与规范;解决兼容性问题;优化数据加载速度;适应分享功能限制;处理视频播放挑战;优化图片加载显示;管理资源文件;提升用户体验;考虑安全性;及时更新维护。通过测试、优化和遵循官方文档,可克服这些问题,打造优质小程序。

热门文章

最新文章