登录注册功能简单实现 的文章封面
返回文章列表
Neuroblue writing

登录注册功能简单实现

后端

后端主要实现数据库数据的请求功能,这里是增加和查询。

三个接口

  • 用户名密码注册
  • 用户名密码登录
  • 用户名信息查询

手工并指导AI生成

==》

接口测试

  • curl -X POST -H "Content-Type: application/json" -d "{\"username\":\"testuser\",\"password\":\"123456\"}" https://josznftwiqbd.sealoshzh.site/api/register
    	  
    curl -X POST -H "Content-Type: application/json" -d "{\"username\":\"testuser\",\"password\":\"123456\"}" https://josznftwiqbd.sealoshzh.site/api/login
    	  
    curl -X GET -H "Content-Type: application/json" https://josznftwiqbd.sealoshzh.site/api/user/{user_id}
    //此处的 userid 为登录后返回的 id

接口测试成功

C:\Users\asus>curl -X GET -H "Content-Type: application/json" https://josznftwiqbd.sealoshzh.site/api/user/67f90d6b9cd535dc336207f8
{"_id":"67f90d6b9cd535dc336207f8","username":"testuser","createdAt":"2025-04-11T12:39:07.552Z","__v":0}

前端

提示词:

这是一个 vue 项目,已经初始化完毕,请帮助我生成一个注册登录主页,使用 vue router,以当前目录为根目录,需要执行命令时请提示我并告诉我为什么这样做。

下面是相关接口信息

我将为前端提供详细的接口文档,包括每个接口的地址、方法、参数和返回值:

API 接口文档

基础信息

  • 基础URL:https://josznftwiqbd.sealoshzh.site
  • 所有请求头都需要设置:Content-Type: application/json

1. 用户注册接口

/**
 * 用户注册
 * @url POST /api/register
 * @description 创建新用户账号
 */

// 请求参数
{
  username: string,  // 用户名
  password: string   // 密码
}

// 成功响应 (200)
{
  message: string    // "注册成功"
}

// 错误响应 (400)
{
  message: string    // "用户名已存在"
}

// 示例代码
const response = await fetch('https://josznftwiqbd.sealoshzh.site/api/register', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    username: 'testuser',
    password: '123456'
  })
});
const data = await response.json();

2. 用户登录接口

/**
 * 用户登录
 * @url POST /api/login
 * @description 用户登录并返回token和用户信息
 */

// 请求参数
{
  username: string,  // 用户名
  password: string   // 密码
}

// 成功响应 (200)
{
  message: string,   // "登录成功"
  token: string,     // JWT token
  user: {
    id: string,      // 用户ID
    username: string, // 用户名
    createdAt: string // 创建时间
  }
}

// 错误响应 (401)
{
  message: string    // "用户名或密码错误"
}

// 示例代码
const response = await fetch('https://josznftwiqbd.sealoshzh.site/api/login', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    username: 'testuser',
    password: '123456'
  })
});
const data = await response.json();

3. 获取用户信息接口

/**
 * 获取用户信息
 * @url GET /api/user/:id
 * @description 根据用户ID获取用户信息
 */

// URL参数
id: string  // 用户ID

// 成功响应 (200)
{
  _id: string,      // 用户ID
  username: string, // 用户名
  createdAt: string // 创建时间
}

// 错误响应 (404)
{
  message: string   // "用户不存在"
}

// 示例代码
const userId = 'user_id_here'; // 替换为实际的用户ID
const response = await fetch(`https://josznftwiqbd.sealoshzh.site/api/user/${userId}`, {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json'
  }
});
const data = await response.json();

错误处理

所有接口可能返回的通用错误:

// 服务器错误 (500)
{
  message: "服务器错误",
  error: string     // 错误详情
}

记录

我们需要做以下几件事:

  1. 安装必要的依赖(vue-router 和 axios)
  2. 创建路由配置
  3. 创建登录和注册页面组件
  4. 配置 API 请求
npm install vue-router@4 axios
mkdir -p src/views src/router src/services

创建登录和注册页面

创建路由配置

==》

登录页面 (/login):
用户名和密码输入
登录表单验证
错误提示
登录成功后保存 token 和用户信息
跳转到注册页面的链接
==============================
注册页面 (/register):
用户名和密码输入
密码确认
注册表单验证
错误提示
注册成功后跳转到登录页面
==============================
路由功能:
路由守卫保护需要认证的页面
未登录用户自动重定向到登录页面
默认路由重定向到登录页面

再解决一下跨域问题后,本地测试注册登录功能正常


基本功能实现后,进行页面和功能的优化。

新增默认页面,用户界面,并转换为唯美风格 UI。


简单修改后的效果图

image-20250411213733096

image-20250411213743250

最后再部署上线试试即可。


后记

后面会对这个内容的具体实现过程手敲一边,并且尝试不依赖于云开发平台部署。

这个画面也是有点糖了。后面可以考虑添加登录后的用户功能,比如 Todo list.