10登录注册


一、登录页布局

二、登录表单验证

v-model 获取数据到 data
并在data中 设置验证的规格

三、输入手机号页面

四、验证码倒计时

codenum–
每一秒被重新赋予更新倒计时

setTimeout
倒计时触发事件

验证码正确后进入首页
gonextIndex

五、登录注册数据接口

六、储存用户信息

index.js
用户登陆成功后,用户数据

	//查询用户名或者手机号存在不存在
	 connection.query( user.queryUserName( params ) , function (error, results, fields) {
		if( results.length > 0 ){
			 connection.query( user.queryUserPwd( params ) , function (err, result) {
				 if(  result.length > 0 ){
					 res.send({
					 	data:{
					 		success:true,
					 		msg:"登录成功",
							data:result[0]
					 	}
					 })
				 }else{
					 res.send({
						data:{
							success:false,
							msg:"密码不正确"
						}
					 })
				 }
			 })
		}else{
			res.send({
				data:{
					success:false,
					msg:"用户名或手机号不存在"
				}
			})
		}
	 })
});

login.vue
接收后端返回的用户信息,保存

//点击登录
			submit(){
				if(  !this.validate('userName')  ) return;
				if(  !this.validate("userPwd") )   return;
				
				uni.showLoading({
					title:"登录中..."
				})
				
				$http.request({
					url:"/login",
					method:"POST",
					data:{
						userName:this.userName,
						userPwd:this.userPwd
					}
				}).then((res)=>{
					
					//保存用户信息
					this.login(res.data);
					uni.showToast({
						title:res.msg,
						icon:"none"
					})
					uni.hideLoading();
					uni.navigateBack({
						delta:1
					})
					
				}).catch(()=>{
					uni.showToast({
						title:'请求失败',
						icon:'none'
					})
				})
				
			},

my.vue

templ ate

<view class='header-logo' @tap='goLogin'>
					<image class='logo-img' :src=" loginStatus ? userInfo.imgUrl : '../../static/img/Children.jpg' " mode=""></image>
					<view class='logo-name'>
						{{  loginStatus ? userInfo.nickName : "用户名称"   }}
					</view>
				</view>

script

computed:{
			...mapState({
				loginStatus:state=>state.user.loginStatus,
				userInfo:state=>state.user.userInfo
			})
		},

七、用户信息持久储存

store/modules/user.js

export default{
	state:{
		//登录状态
		loginStatus:false,
		//token
		token:null,
		//用户信息(昵称/头像)
		userInfo:{}
	},
	getters:{},
	mutations:{
		//一旦进入了app,就需要执行这个方法,把用户信息读出来
		initUser(state){
			let userInfo = uni.getStorageSync('userInfo');
			if( userInfo ){
				userInfo = JSON.parse( userInfo );
				state.userInfo = userInfo;
				state.loginStatus = true;
				state.token = userInfo.token;
			}
		},
		//登录后保存用户信息
		login(state,userInfo){
			state.userInfo = userInfo;
			state.loginStatus = true;
			state.token = userInfo.token;
			//持久化存储 ===>把对象转换成字符串
			uni.setStorageSync('userInfo',JSON.stringify(userInfo));
		}
	},
	actions:{}
}

八、退出登录

登录成功的状态,将其修改

users.js

//退出登录
		loginOut(state){
			state.loginStatus = false;
			state.userInfo = {};
			state.token = null;
			//删除本地存储的信息
			uni.removeStorageSync('userInfo');
		}

my-config.vue

<view class='my-exit' @tap='outLogin'>退出登录</view>
		
	</view>
</template>

<script>
	import {mapMutations} from 'vuex'
	export default {
		data() {
			return {
				
			}
		},
		methods: {
			...mapMutations(['loginOut']),
			goPathList(){
				uni.navigateTo({
					url:'../my-path-list/my-path-list'
				})
			},
			outLogin(){
				
				uni.showToast({
					title:"退出成功",
					icon:"none"
				})
				this.loginOut();
				uni.switchTab({
					url:"../index/index"
				})
			}
		}
	}
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值