登录功能实现流程

💂 个人网站:【紫陌】【笔记分享网】
💅 想寻找共同学习交流、共同成长的伙伴,请点击【前端学习交流群】

登录实现流程

1.看接口文档

登录功能必须注册功能已经实现的,登录是已经注册好的用户。

需要带两个参数
post请求

请求URL:**/api/login*
请求方式:POST
请求体:

参数名必选类型说明
usernamestring用户名
passwordstring密码

2.书写接口

	src
	├── api
	     ├── index.js 	(api接口同一管理)

index.js

// 登录接口
// /login   请求方式 : POST
export const reqLogin = (data) =>requests({ url:"/api/login", method:"post",data})

3.表单收集数据

通过v-model收集好账号密码数据放ruleForm对象里

 ruleForm: {
        username: "",
        pass: "",
      },

4.发请求

数据我们已经收集好了,现在就是带着数据发请求。
一般这种都是登录按钮点击完发起请求,所以要在注册按钮绑定事件函数。
1.绑定事件函数

<el-button type="primary" @click="login('ruleForm')">登录</el-button>

2.书写事件函数

//登录回调函数
    login(formName) {
      this.$refs[formName].validate(async (valid) => {
        if (valid) {
          //解构出表单数据
          const { username, pass } = this.ruleForm
          //后端需要application/x-www-form-urlencoded 格式的表单数据 通过URLSearchParams 解析参数 
          let params = new URLSearchParams()
          params.append("username", username)
          params.append("password", pass)
          //参数整理完 发请求
          let { data: result } = await this.$API.reqLogin(params)
          //判断请求是否请求成功
          if (result.status == 0) {
            this.$router.push("/layout")
          }else{
            this.$message.error(result.messages)
          }
          
        } else {
          this.$message.error("按提示填写")
          return false;
        }
      });
    },

1.登录注册都是引入element ui,当饿了么通过表单验证时,就解构出表单数据,不通过弹窗提示。
2.后端需要application/x-www-form-urlencoded 格式的表单数据 通过URLSearchParams 解析参数
3.参数整理完 发请求,请求成功跳转首页,失败弹窗提示。

5.保存token

5.1 了解token

发起请求成功后,打印请求成功的结果你会发现后端会返回一个令牌(token)

	 if (result.status == 0) {
            console.log(result);
          }

token

登录进去之后都要携带token,带着token才能跟后端拿数据。否则拿不到

5.2保存token

token保存到哪里?
token保存到本地存储,持久化,还有一种保存到vuex
注意:vuex本身不是持久化存储的,刷新就没有了。需要通过插件进行存储。(vuex- persist)
我这里就用本地存储,利用vuex进行本地存储,也可以在当前组件本地存储比较方便,为学习多点把vuex用上

1.搭建vuex环境(我这里项目是vue2,下载vuex3版本)
创建好文件夹
src
├── store
├── index.js(仓库)

import Vue from "vue"
import Vuex from "vuex"
//使用Vuex
Vue.use(Vuex)


const actions = {
  
}

const mutations = {
   
}

const state = {
}

export default new Vuex.Store({
    actions,
    mutations,
    state
})

在main.js文件注册一下

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

2.实现保存token
在发请求请求成功的时候进行commit提交mutations
注意:可以组件直接commit提交mutaions,不是一定需要dispatch提交给actions,因为actions是用来发请求的,我们的请求已经在组件发了。所以不用dispatch

先封装个工具函数----创建好文件夹
src
├── utils
├── Token.js(有关token工具函数同一管理)

Token.js

//存储token
export const setToken = (token) => {
    localStorage.setItem("TOKEN", token)
}

//获取Token
export const getToken = () => {
    return localStorage.getItem("TOKEN")
}

//删除token
export const removeToken = () => {
    localStorage.removeItem("TOKEN")
}

三个工具函数要用到的,登录就要用setToken和getToken函数,退出登录就要用到removeToken函数

登录页面:
在刚才的基础上加
//账号密码成功跳转首页并且保存token
this.$store.commit(“updateToken”,result.token)
//token保存到本地存储
setToken(result.token)

import {setToken} from "@/utils/Token"
			.....省略上面代码
		 //判断请求是否请求成功
          if (result.status == 0) {
            //账号密码成功跳转首页并且保存token
            this.$store.commit("updateToken",result.token)
            //token保存到本地存储
            setToken(result.token)
            this.$router.push("/layout")
          }else{
            this.$message.error(result.messages)
          }
	.....省略下面代码

然后再vuex书写刚刚commit的updateToken的函数

	src
	├── store
	     ├── index.js(仓库)
import {getToken} from "@/utils/Token"

const mutations = {
    // 登录成功获取Token
    updateToken(state, token) {
        state.token = token
    },
}


const state = {
    // 存储token
    token: getToken(),
}

state存储token要在本地存储获取,为什么呢,如果不是本地获取,那就是存储在vuex刷新就没有了,所以要在本地存储获取,调用封装好的函数 getToken()

登录的大致操作就是这些了,需要小伙伴有一定的基础才能看得懂,不懂也可以找up

想看注册的点这里 链接: 注册功能实现

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值