创建文件,如上图

创建好文件后去router.index.js配置路由

import { createRouter, createWebHistory } from 'vue-router';

// 定义路由
const routes = [
{
path: '/',
name: 'ControlCenter',
component: () => import('../views/ControlView.vue'), },
{
path: '/register',
name: 'register',
component: () => import('../components/UserSign/Register.vue'),
},
{
path: '/login',
name: 'login',
component: () => import('../components/UserSign/Login.vue'),
}, // 其他路由...
]; // 创建路由实例
const router = createRouter({
history: createWebHistory(),
routes,
}); export default router;

先去写注册吧。

页面无非就是一个表单,输入账号,输入密码,输入昵称啥的,还有个按钮用来提交

界面设计请查阅AntDesignVue文档,利用它们的UI组件进行设计,我主要讲一下业务代码怎么写。

编写接口文件

在apis文件夹下创建UserApi.js,里面用来放关于用户操作的各种接口

多用户查询

根据id查询

更新

删除

登录

新增

好,我把UserApi.js这个文件完整代码贴出来参考

import { get, post, put, deleteRequest } from "./api.js";

export function user_get_list(){
return get("/users")
}
export function user_get_by_id(){
return get(`/users/${userId}`)
}
export function user_update(data){
return put("/users",data)
}
export function user_delete_by_id(){
return deleteRequest(`/users/${userId}`)
}
export function user_login(userAccount,userPassword){
return post("/users/login",{
"userAccount":userAccount,
"userPassword":userPassword
})
}
export function user_add(data){
return post("/users",data)
}

注册

注册页面自己设计,例如我的表单数据是存放在formState中的,

const formState = reactive({
userNickname: '',
userAccount:'',
userPassword: '',
remember: true,
});

注意,这些参数的名字要和后端POJO中的名字一致哦,不然匹配不上,就自动获取不了。

引入新增用户的api

import {user_add} from "../../apis/UserApi.js";

编写请求

//点击登录按钮执行onFinish这个函数
const onFinish = values => {
console.log("values",values)
//调用user_add()这个接口,then里面的res表示返回结果 user_add(values).then((res)=>{
let code = res["code"]
let msg=res["msg"]
//
notification.open({
message: '通知',
description:msg,
icon: () =>
h(SmileOutlined, {
style: 'color: #108ee9',
}),
});
//如果注册成功就跳转到登录界面
if(code===1){
router.push("/login")
}
})
};

是不是太太太简单了。

那么,我们继续完成登录吧

登录

登录页面同样自己设计(利用AntDesignVue)

登录成功,我们要做什么呢?

登陆成功意味着账号密码正确,但是这个号的状态可能是处于冻结状态对吧,因此我们要判断一下账号是否处于冻结状态(当然这个事情交给后端做会更好,我们现在就现在前端判断吧)

要是没问题的话,那是不是该把登录信息保存到缓存。

现在我们一般保存到localStorage中

关于localStorage,推荐看看我的这篇笔记:

【前端】【H5 API】Web存储 Web Storage

保存这个数据我使用base64编码,有个细节问题要注意,请看我这篇博客

【前端】2024年 前端Base64编码的中文处理问题

保存好后,就可以跳转到主页或者其他你想跳转的页面了

我们将用户数据保存在本地的目的是:

0.判断用户有没有登录

1.访问各个页面时判断用户有没有权限访问这个页面

2.需要用户数据时方便提取

3.发送操作请求时能知道是哪个用户在操作

……

我们在保存的时候肯定都是会保存一个时间的,因为用户登录过一次后不可能永远就处于登录状态。

我们记录了登录时间,就可以知道他是什么时候登录的,什么时候提示他过期,需要重新登录。

关于数据传输param和body的问题

在我的这个例子中,登录接口是以post的方式接收param参数

而我们在api.js里面配置的post请求函数是 以post方式发送body参数

显然对不上,那么就算我们填写了数据,后端也接受不到数据

这时候,我们需要在编写一个以post的方式发送param参数的方法

如下

// 统一的post请求方法
// 统一的post请求方法,发送数据在请求体中
export function post(url, data = {}) {
return axiosInstance.post(url, data);
} // 统一的post请求方法,发送数据在查询参数中
export function postWithParams(url, params = {}) {
return axiosInstance.post(url, null, { params });
}
export function user_login(userAccount,userPassword){
return postWithParams("/users/login",{
"userAccount":userAccount,
"userPassword":userPassword
})
}

ok,问题解决

2024年1月Java项目开发指南13:登录注册实现的更多相关文章

  1. 转:Java项目开发规范参考

    Java项目开发规范参考 - KevinLee的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net/u011383131/article/details/51227860 ...

  2. IDEA 学习笔记之 Java项目开发深入学习(2)

    Java项目开发深入学习(2): 查找变量被用到的地方 编译当前文件 增加变量watch 注意:我使用了keymap (eclipse模板),所以很多快捷键和eclipse一样. F5单步调试进入函数 ...

  3. IDEA 学习笔记之 Java项目开发深入学习(1)

    Java项目开发深入学习(1): 定义编译输出路径: 继承以上工程配置 重新定义新的项目编译路径 添加source目录:点击添加,再点击移除: 编译项目: 常用快捷键总结: Ctrl+Space 代码 ...

  4. IDEA 学习笔记之 Java项目开发

    Java项目开发: 新建模块: 添加JDK: 导入本地Jars: 从远程Maven仓库下载: 创建package: 新建类/接口/枚举等: 字体太小,改字体: Duplicate Scheme 修改编 ...

  5. 《Maven在Java项目开发中的应用》论文笔记(十七)

    标题:Maven在Java项目开发中的应用 一.基本信息 时间:2019 来源:山西农业大学 关键词:Maven:Java Web:仓库:开发人员:极限编程; 二.研究内容 1.Maven 基本原理概 ...

  6. 收藏基本Java项目开发的书

    一.Java项目开发全程实录 第1章 进销存管理系统(Swing+SQL Server2000实现) 第2章企业内部通信系统(Swing+JavaDB实现) 第3章 企业人事管理系统( Swing+H ...

  7. Java项目开发中实现分页的三种方式一篇包会

    前言   Java项目开发中经常要用到分页功能,现在普遍使用SpringBoot进行快速开发,而数据层主要整合SpringDataJPA和MyBatis两种框架,这两种框架都提供了相应的分页工具,使用 ...

  8. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

    Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...

  9. Java项目开发

    项目开发整体构建: MVC+DAO设计模式 用面向对象的方式理解和使用数据库,一个数据库对应一个java项目 数据库--项目 表--类 字段--属性 表中的一条数据--类的一个对象 M:模型层 Jav ...

  10. Java项目接入sso单点登录

    最近在落地cat(java开发的一款开源监控系统)接入公司的内部项目,其中有项需求是接入公司的sso单点登录系统.研究了公司之前java项目接入sso系统,大部分是采用spring框架,然后依赖spr ...

随机推荐

  1. 使用iis设置网站php版本为7.3

    内容:使用iis设置网站php版本为7.3这张图 是多少人的噩梦  早期的宝塔版本 没办法在线升级, php版本只能到7.1   默认就没有7.2以上版本   怎么办?可以在iis设置第一步: 第二步 ...

  2. BPF BTF 详解

    1. 介绍 BTF(BPF Type Format)是内嵌在BPF(Berkeley Packet Filter)程序中的数据结构描述信息.BPF原本是用于数据包过滤的编程语言,但随着eBPF(ext ...

  3. 利用3Dnii标签文件,生成png图片

    为了便于直观的看到2D标签,通常会将其转化为png图像,具体代码如下: # coding:utf-8 from glob import glob import os import SimpleITK ...

  4. sqlSugar 使用原生模式链接数据库

    using System.Reflection; using zhulongxu_webapi_pro.Tools; namespace zhulongxu_webapi_pro.Services { ...

  5. 一次彻底讲清如何处理mysql 的死锁问题

    MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导致所有事务都无法继续执行的现象.在 InnoDB 存储引擎中,死锁是通过锁机制产生的,特别是在并发较高.业务逻辑复杂的情况下,更容易发生 ...

  6. 华为Ensp拓扑,使用MSTP、OSPF、DHCP、VRRP、链路聚合、CHAP

    OSPF+DHCP+VRRP+Eth-trunk+PPP(CHAP)+MSTP 实验目标: LSW1和LSW2核心交换机互为备份,配置链路聚合,设备冗余设计,LSW1和LSW2作为核心交换机配置DHC ...

  7. Oracle 数据泵 定时全库备份&&删除备份文件【注意点】

    一.概述 在给客户部署的数据泵备份&&删除过期备份脚本时,脚本删除部分未生效,导致存储空间占用非常大. 手动执行该删除命令时,执行成功: 最后发现需要增加 find.rm 等命令的PA ...

  8. Web渗透_11 补充结语 必看!!

    业务逻辑漏洞 在web程序编写时,可能会留下各种各样的漏洞.最常见的就是利用Burpsuit,通过对包的拦截,对内容的修改,来利用了漏洞. 典型的例子就是电商系统.购买商品时,如果在请求包里,将购买数 ...

  9. Reviewbot 开源 | 为什么我们要打造自己的代码审查服务?

    Reviewbot 是七牛云开源的一个项目,旨在提供一个自托管的代码审查服务, 方便做 code review/静态检查, 以及自定义工程规范的落地. 静态检查不是个新鲜事. 我记得早在几年前,我们就 ...

  10. 题解:CF1015D Walking Between Houses

    题解:CF1015D Walking Between Houses 算法 模拟,分类讨论 分析 首先,设每步走的距离为 \(t_i\),我们发现 \(t_i\) 应是满足 \(1\le t_i\le ...