【VUE项目实战】12、登录与退出功能-请求登录

接上篇《11、绘制登录组件-数据验证篇
上一篇我们讲解了如何实现账号密码的数据验证、表单的重置以及登录前的预验证。
本篇我们来讲解点击登录后发起登录请求的操作。

一、进行登录请求

上一篇我们在点击登录按钮前校验了表单内容的合法性,下面我们就根据表单的校验成功与否,来决定是否执行登录。

我们在原来的login方法中,判断表单校验方法中的valid形参,如果是false的时候,就不进行登录请求,如果是true,就进行登录请求:

login(){
  this.$refs.loginFormRef.validate((valid)=>{
    if(!valid) return;//false 不执行登录
    //true执行登录
    
  });
}

这里需要调用的是之前接口文档中的login接口:
进行登录需要执行网络服务请求,我们这里使用axios组件。首先在原来的main.js中添加axios的引用(组件已经在项目初始化的时候安装了),指定我们的后台接口的根路径,并将axios对象赋值给全局$http对象:

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './plugins/element.js'
//导入全局样式表
import './assets/css/global.css'
import axios from 'axios'
axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/' //定义根路径
Vue.prototype.$http = axios //在原型链上给$http赋值为axios对象

Vue.config.productionTip = false

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

此时我们回到login方法,这个时候就可以使用axios进行网络请求了:

login(){
  this.$refs.loginFormRef.validate(async (valid)=>{
    if(!valid) return;//false 不执行登录
    //true执行登录
    const result = await  this.$http.post("login",this.loginFrom);
    console.log(result);
  });
}

因为登录接口需要账号密码,而我们表单中的账号密码信息都封装在loginFrom对象中,所以这里直接传该对象。
然后因为axios的post请求返回的是一个Promise对象,需要用await修饰,然后上面整个方法体要修饰为async同步锁,才能等post请求结束后,result来接收到返回的值。
这里我们先打印出来返回的result数据,看看都是什么信息。

我们要验证接口请求效果,首先保证我们之前的Mysql数据库是启动状态:

然后启动后台NodeJS服务:
服务启动成功后,我们启动vue前端项目,在登录页面输入账号密码试试:

F12打开开发者工具,可以看到axios为我们封装好的返回对象,其中data就是服务端的返回信息。
我们可以看到data中的data是数据,meta是提示信息,我们可以用解构表达式只接受data参数,并赋值给一个对象,打印出来:

login(){
  this.$refs.loginFormRef.validate(async (valid)=>{
    if(!valid) return;//false 不执行登录
    //true执行登录
    const {data:res} = await this.$http.post("login",this.loginFrom);
    console.log(res);
  });
}

再次请求,可以看到返回的两个参数的内容:

二、提示用户登录结果

通过观看API文档可以知道,当status为200的时候,是登录成功,其余都是登录失败,我们可以加一个判断,给用户一个弹框反馈:

login(){
  this.$refs.loginFormRef.validate(async (valid)=>{
    if(!valid) return;//false 不执行登录
    //true执行登录
    const {data:res} = await this.$http.post("login",this.loginFrom);
    console.log(res);
    if(res.meta.status !== 200) return alert("登录失败!");
    alert("登录成功!");
  });
}

效果:

这里的弹框非常丑陋,我们需要用到elementUI中的Message消息提示组件,分为四张,分别显示「成功、警告、消息、错误」的带颜色效果浮窗:

样例代码:

<template>
  <el-button :plain="true" @click="open2">成功</el-button>
</template>

<script>
  export default {
    methods: {
      open1() {
        this.$message('这是一条消息提示');
      },
      open2() {
        this.$message({
          message: '恭喜你,这是一条成功消息',
          type: 'success'
        });
      },
      open3() {
        this.$message({
          message: '警告哦,这是一条警告消息',
          type: 'warning'
        });
      },
      open4() {
        this.$message.error('错了哦,这是一条错误消息');
      }
    }
  }
</script>

我们来编写一下,首先在element.js中引入我们的Message组件:

import Vue from 'vue'
import { Button } from 'element-ui'
import {Form,FormItem} from 'element-ui'
import {Input} from 'element-ui'
import {Message} from 'element-ui' //弹框提示组件

Vue.use(Button)
Vue.use(Form)
Vue.use(FormItem)
Vue.use(Input)
Vue.prototype.$message = Message //给原生链上的$message指定为Message

然后修改刚刚的login方法,根据不同的登录反馈结果,显示不同的弹框:

login(){
  this.$refs.loginFormRef.validate(async (valid)=>{
    if(!valid) return;//false 不执行登录
    //true执行登录
    const {data:res} = await this.$http.post("login",this.loginFrom);
    console.log(res);
    if(res.meta.status !== 200) return this.$message.error("登录失败!"+res.meta.msg);
    this.$message.success("登录成功!");
  });
}

效果:

至此,我们的登录请求部分编写完成。
下一篇我们来处理进登录成功之后的行为。

参考:黑马程序员(www.itheima.com)Vue项目实战教学视频

转载请注明出处:https://blog.csdn.net/acmman/article/details/119971099

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
Vue 前端项目中的登录组件是一个用于用户登录的界面,其中的登录框是用户输入用户名和密码的地方。 登录框界面通常包括以下几个元素: 1. 用户名输入框:用户可以在这里输入自己的用户名。 2. 密码输入框:用户可以在这里输入密码。为了保护用户的信息安全,密码通常会以密文形式显示。 3. 登录按钮:用户点击该按钮后,会触发登录操作。 在Vue登录组件中,这些元素通常会被封装成一个表单,并且通过Vue的数据绑定功能与组件中的数据进行关联。例如,用户名输入框和密码输入框的输入值会与组件中的data对象中的对应属性进行双向绑定,以便于在登录操作中获取用户输入的内容。 在登录组件中,可能还会包括其他的功能,如记住密码、忘记密码、注册等。这些功能一般会以链接或按钮的形式呈现在登录框界面上,用户可以点击对应的链接或按钮来进行相关操作。 登录框界面的设计也是尤为重要的,合理的布局和样式可以增加用户的操作体验。一般来说,登录框应该具备较好的可视性,尽量避免颜色过于花哨、排版过于复杂等,同时要确保界面的整体美观和统一性,增加用户的易用性。 总之,登录组件中的登录框界面是一个用户输入用户名和密码以进行登录操作的地方,其中包括用户名输入框、密码输入框和登录按钮等元素。通过Vue的数据绑定功能登录框中的用户输入内容能够与组件中的数据进行关联。合理的布局和设计能够提高用户的使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光仔December

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值