登录模块与token的使用和创建

 

 

登录模块的使用与创建

一、如何实现登录注册

1.在Vue里创建文件Login.vue和user.vue

                                        46a111750ba34eb388ea57d46c593dff.png#pic_center

2.在router里配置路由3.在user页面点击跳转到Login页面

    {
		path: '/user',
		name: 'User',
		component: () => import('../views/user/User.vue'),
		meta: {
			keep: true
		}
	},
	{
		path: '/login',
		name: 'Login',
		meta: {
			nofoot: true
		},
		component: () => import('../views/user/Login.vue')
	},

 

3.在user页面点击跳转到Login页面

<template>
	<div>
		<router-link to="/login">登录</router-link>
	</div>
</template>

 4.新建api文件,获取登录接口

import request from '../../utils/request.js'
import qs from 'qs'
 
 //请求登录的文档接口
function Login(data){
	// 返回一个promise
	return new Promise((resolve,reject)=>{
		request.post("/member/index_login.php",qs.stringify(data))
		.then(res=>{resolve(res)})
		.catch(err=>{reject(err)})
	})
	
}
//导出接口
export {Login};

5.在Login页面实现单击登录

<template>
	<div>
	//进行数据的双向绑定
		用户名:<input type="text" v-model="user.userid" /><br>
		密  码:<input type="password" v-model="user.pwd" /><br>
		//单击时,调用login()事件
		<button @click="login()">登录</button>
	</div>
</template>

<script>
//引入api文件
	import {Login} from '@api/user/user.js'

	export default {
		data() {
			return {
				user: {
				//接口文档数据
					fmdo: "login",
					dopost: "login",
					userid: '',
					pwd: '',
				}
			}
		},
		methods: {
		//调用登录接口,实现成功登录
			login() {
				Login(this.user)
					.then(res => {
					//登录成功是弹出提示框
						alert(res.data.msg);		
						//判断是否登录成功,status == 1是接口文档里定义的,等于1是登录成功
						if (res.data.status == 1) {
							//登录成功跳转到user页面
							this.$router.replace("/user")
						}
					})
			}
		}
	}
</script>

二、登录成功后获取用户信息

1.在api文档里添加获取用户信息接口

function GetUserInfo(){
	// 登陆成功时获取用户信息的文档接口
	return new Promise((resolve,reject)=>{
		request.get("/member/ajax_login.php")
		.then(res=>{resolve(res)})
		.catch(err=>{reject(err)})
	})
	
}
//导出接口
export {Login,GetUserInfo};

2.在user页面获取用户信息

<template>
	<div>
	//登录成功时显示用户信息
		<p v-if="userInfo.M_LoginID">
			<span>{{userInfo.M_LoginID}}:</span>
			<span>{{userInfo.M_Scores}}:</span>
			<span>退出</span>
		</p>
		//否则显示登陆
		<p v-else><router-link to="/login">登录</router-link></p>
	</div>
</template>
<script>
//引入api文件的GetUserInfo方法
	import {GetUserInfo} from "../../api/user/user.js"
	export default{
		data(){
			return{
			//用户信息
				userInfo:{}
			}
		},
		created() {
			//调用获取用户信息的方法
			GetUserInfo()
				.then(res => {
					if (res.data) {
						// 重新赋值个userInfo
						this.userInfo = res.data;
					}
				})
		},
}

三、登陆后退出

1.在user里,当单击退出键时调用logout()事件
2.在user里导入登陆接口文档Login
3.在user页面的methods里通过传参的不同实现退出登陆

<template>
	<div>
			//单击退出键时调用logout()事件
			<span @click="logout()">退出</span>
		</p>
	</div>
</template>Login
<script>
//引入api文件的GetUserInfo,Login方法
	import {GetUserInfo,Login} from "../../api/user/user.js"
	
	methods:{
			//退出方法
			logout(){
			//登陆和退出的接口一样,传入的参数不一样
				Login({dopost:"exit"})
				.then(res=>{
					alert(res.data.msg);
					//如果状态为1代表退出成功
					if(res.data.status==1){
						this.userInfo={};
						}
				})
			}
		}

四、token的使用
1.介绍

1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。

2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

3、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

2.使用
登陆时保存token

methods: {
			login() {
				Login(this.user)
					.then(res => {
						alert(res.data.msg);
						// 判断是否登陆成功
						if (res.data.status == 1) {
							//获取查询参数
							var redirect=this.$route.query.redirect||"/user";
							// 当登录成功时候把用户的token存起来
							window.localStorage.setItem("token",res.data.token);
							this.$router.replace(redirect);
						}
					})
			}
		}

在页面获取用户信息

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA562J562JLi4uLg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center

然后在utils的request里添加token请求头

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA562J562JLi4uLg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center 

退出时,要清除token

<template>
	<div>
			//单击退出键时调用logout()事件
			<span @click="logout()">退出</span>
		</p>
	</div>
</template>Login
<script>
//引入api文件的GetUserInfo,Login方法
	import {GetUserInfo,Login} from "../../api/user/user.js"
	
	methods:{
			//退出方法
			logout(){
			//登陆和退出的接口一样,传入的参数不一样
				Login({dopost:"exit"})
				.then(res=>{
					alert(res.data.msg);
					//如果状态为1代表退出成功
					if(res.data.status==1){
						this.userInfo={};
						//注销token
						window.localStorage.removeItem("token");
						}
				})
			}
		}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值