首页 > 编程语言 >2024年1月Java项目开发指南13:登录注册实现

2024年1月Java项目开发指南13:登录注册实现

时间:2024-01-25 23:57:25浏览次数:36  
标签:function 13 Java 登录 2024 export user return post

image

创建文件,如上图

创建好文件后去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,里面用来放关于用户操作的各种接口

多用户查询

image

根据id查询
image

更新
image

删除
image

登录
image

新增
image

好,我把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)
image

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

image

要是没问题的话,那是不是该把登录信息保存到缓存。
现在我们一般保存到localStorage中

关于localStorage,推荐看看我的这篇笔记:
【前端】【H5 API】Web存储 Web Storage

image

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

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

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

我们将用户数据保存在本地的目的是:
0.判断用户有没有登录
1.访问各个页面时判断用户有没有权限访问这个页面
2.需要用户数据时方便提取
3.发送操作请求时能知道是哪个用户在操作
……

我们在保存的时候肯定都是会保存一个时间的,因为用户登录过一次后不可能永远就处于登录状态。
我们记录了登录时间,就可以知道他是什么时候登录的,什么时候提示他过期,需要重新登录。

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

image

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

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

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

这时候,我们需要在编写一个以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
    })
}

image

ok,问题解决

标签:function,13,Java,登录,2024,export,user,return,post
From: https://www.cnblogs.com/mllt/p/17988351/project202401-13

相关文章

  • 2024年1月Java项目开发指南12:前后端分离项目跨域问题解决
    创建config文件夹,创建WebConfig文件代码如下(可以直接抄)packagecc.xrilang.serversystem.config;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotation.CorsRegistry;importorg.springframework.web.se......
  • 2024年展望
    前言本来这个2024年展望是想跟2023年总结写到一起的。(https://www.cnblogs.com/bee0060/p/17971435)本来都写完了,但是过了几天,想着想着,感觉又有更多的内容想写,还是单独拆出来吧。低头看看自己光阴似箭,岁月如梭,老掉牙的开场白,却写在了第二段。过去我们会憧憬遥远的将来,想着以......
  • Java 程序编译和运行过程
    Java程序从.java文件创建到程序运行要经过两大过程:.java文件由编译器编译成.class文件字节码由JVM解释运行编译过程.java源文件会被Java编译器进行编译为.class文件:Java编译一个类时,如果这个类所依赖的类还没有被编译,编译器会自动的先编译这个所依赖的类,然后引用......
  • java中内置锁
    1.概述Java内置锁是一个互斥锁,最多只有一个线程能够获得该锁,当线程B尝试去获得线程A持有的内置锁时,线程B必须等待或者阻塞,直到线程A释放这个锁,如果线程A不释放这个锁,那么线程B将永远等待下去。Java中每个对象都可以用作锁,这些锁被称为内置锁。线程进入同步代码块或方法时会自......
  • 2024年1月Java项目开发指南11:axios请求与接口统一管理
    axios中文网:https://www.axios-http.cn/安装npminstallaxios配置在src下创建apis文件夹创建axios.js文件配置如下://src/apis/axios.jsimportaxiosfrom'axios';//创建axios实例constservice=axios.create({baseURL:"http://127.0.0.1:8080",//api的ba......
  • 2024年1月Java项目开发指南10:vite+Vue3项目创建
    新建项目安装routernpminstallvue-router在src下新建目录router,在目录下新建index.js在index.js里面配置路由import{createRouter,createWebHistory}from'vue-router';//定义路由constroutes=[//在这里配置路由];//创建路由实例constrouter=......
  • java中的ThreadLocal
    1.ThreadLocal的基本使用在Java的多线程并发执行过程中,为了保证多个线程对变量的安全访问,可以将变量放到ThreadLocal类型的对象中,使变量在每个线程中都有独立值,不会出现一个线程读取变量时而被另一个线程修改的现象。ThreadLocal类通常被翻译为线程本地变量类或者线程局部变......
  • Java方法详解
    Java方法详解1、何谓方法System.out.println(),那么它是什么呢?Java方法是语句的集合,他们在一起执行以一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法的程序中被创建,在其他地方被引用设计方法的原则:方法的本意是功能块,就是实现某个功......
  • 2024转行程序员的请注意:均月薪在40-70k
    前言2023年,对大多数行业来说都是不太好过的一年。对程序员来说也是如此,很多粉丝朋友都在说android工作特别难找,一个岗位都是几千份简历........大家心里都是特别的焦虑,本以为2024年就业情况会有好转,但实际上并非如此。没想到2024年的开启,却是硅谷大裁员!2024年才过了十几天,就传......
  • 安装QuartusII13
    安装QuartusII13.0一、下载quartus软件方法一:通过Altera公司[官网]https://www.intel.cn/content/www/cn/zh/products/details/fpga/development-tools/quartus-prime.html下载对应版本,但是当下只能没有13.0的旧版本了方法二:百度网盘[链接]:<链接:https://pan.baidu.com/s/1nLh......