小程序登录方式切换 不做url跳转
var filegUP = require('../../utils/getUserPassword.js');
var filemd5 = require('../../utils/md5.min.js');
var fileUtil = require('../../utils/util.js');
var chkStrLength = fileUtil.chkStrLength;
var gd = getApp().globalData;
var apiUrlApp = gd.apiUrlApp;
var localImgPath = gd.localImgPath;
var loginTypeArr = Array('手机号', '用户名');
var loginTypeAreaMobile = true;
var loginTypeStr = loginTypeArr[1];
Page({
onLoad: function(option) {
console.log("加载登录页面")
wx.clearStorageSync()
console.log("同步清理本地数据缓存")
},
data: {
localImgPath: localImgPath,
loginTypeStr: loginTypeStr,
loginTypeAreaMobile: loginTypeAreaMobile
},
formSubmit: function(e) {
var usernameChk = e.detail.value.username;
var passwordChk = e.detail.value.password;
if (usernameChk.length == 0 || passwordChk.length == 0) {
wx.showToast({
title: '用户名或密码不得为空!',
icon: 'loading',
duration: 1500
}),
setTimeout(function() {
wx.hideToast()
}, 2000)
} else if (passwordChk.length < 1) {
wx.showToast({
title: '请输入大于1位用户名!',
icon: 'loading',
duration: 1500
}),
setTimeout(function() {
wx.hideToast()
}, 2000)
} else if (passwordChk.length < 1 || passwordChk.length > 20) {
wx.showToast({
title: '请输入1-20密码!',
icon: 'loading',
duration: 1500
}),
setTimeout(function() {
wx.hideToast()
}, 2000)
} else {
wx.request({
url: apiUrlApp + 'acc/get_salt/?username=' + usernameChk,
header: {},
method: "GET",
data: {},
success: function(res) {
if (res.data.status != 1) {
wx.showToast({
title: 'Fail-getSalt',
icon: 'loading',
duration: 2000
})
} else if (res.data.status == 1) {
var salt = res.data.data.salt;
var pwdWithSalt = passwordChk + '-' + salt;
var pwdMd5 = filemd5.md5(pwdWithSalt);
var pwdSubmit = pwdMd5.slice(-17) + pwdMd5.slice(0, -17);
wx.request({
url: apiUrlApp + 'acc/login/',
header: {
"Content-Type": "application/x-www-form-urlencoded"
},
method: "POST",
data: {
username: usernameChk,
password: pwdSubmit
},
success: function(res) {
//storage
wx.setStorageSync("username", res.data.data["username"]);
wx.setStorageSync("gid", res.data.data["gid"]);
wx.setStorageSync("uid", res.data.data["uid"]);
wx.request({
url: apiUrlApp + 'acc/get_userinfo/',
header: {
'Content-Type': 'application/x-www-form-urlencoded',
'cookie': wx.getStorageSync('username'),
'cookie': wx.getStorageSync('uid'),
'cookie': wx.getStorageSync('gid')
},
method: "GET",
data: {
username: wx.getStorageSync('username')
},
success: function(res) {
console.log(res)
if (res.data.status == 1) {
wx.showToast({
title: "帐号详情",
icon: 'success',
duration: 1500
});
wx.setStorageSync("userinfo", res.data.data);
wx.request({
url: apiUrlApp + 'common/get_orginfo/',
header: {
'Content-Type': 'application/x-www-form-urlencoded',
'cookie': wx.getStorageSync('username'),
'cookie': wx.getStorageSync('uid'),
'cookie': wx.getStorageSync('gid')
},
method: "GET",
data: {
uid: wx.getStorageSync('uid')
},
success: function(res) {
if (res.data.status == 1) {
wx.showToast({
title: "帐号详情",
icon: 'success',
duration: 1500
});
res.data.data.cat_id_1 = industryClassification[res.data.data.cat_id_1];
wx.setStorageSync("companyinfo", res.data.data);
} else if (res.data.status == 0) {
wx.showToast({
title: "无数据返回",
icon: 'success',
duration: 1500
})
} else if (res.data.status == -1) {
wx.showToast({
title: "请求异常,请检查重试",
icon: 'loading',
duration: 2000
})
}
}
})
} else if (res.data.status == 0) {
wx.showToast({
title: "无数据返回",
icon: 'success',
duration: 1500
})
} else if (res.data.status == -1) {
wx.showToast({
title: "请求异常,请检查重试",
icon: 'loading',
duration: 2000
})
}
}
})
if (res.data.status == 1) {
wx.showToast({
title: "登录成功,页面跳转中",
icon: 'success',
duration: 1500
});
wx.reLaunch({
url: '../user_center/userCenter'
})
} else if (res.data.status == 0) {
wx.showToast({
title: "用户名或密码错误!",
icon: 'loading',
duration: 1500
})
} else if (res.data.status == -1) {
wx.showToast({
title: "请求异常,请检查重试",
icon: 'loading',
duration: 1500
})
}
}
})
}
}
})
}
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function() {
},
changeLoginType: function(e) {
console.log('changeLoginType--->')
var title ='';
loginTypeAreaMobile == true ? (loginTypeStr = loginTypeArr[1], title = loginTypeArr[0]) : (loginTypeStr = loginTypeArr[0], title = loginTypeArr[1])
wx.setNavigationBarTitle({
title: title + '登录'
});
this.setData({
loginTypeStr: loginTypeStr,
loginTypeAreaMobile: loginTypeAreaMobile
})
loginTypeAreaMobile = !loginTypeAreaMobile
}
})
<!--index.wxml-->
<view id="login">
<form bindsubmit="formSubmit" bindreset="formReset" >
<view class="page__bd" class="{{loginTypeAreaMobile===true ? '':'hide' }}" >
<view class="weui-cells">
<navigator url="" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__hd">
<image src="{{localImgPath}}mobile.svg" style="margin-right: 5px;vertical-align: middle;width:20px; height: 20px;"></image>
</view>
<input class="weui-input" type="number" value="{{usernameMobile}}" name="username" maxlength="13" auto-focus placeholder="请输入手机号码" /> </navigator>
<navigator url="" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__hd">
<image src="{{localImgPath}}mobilePwd.svg" style="margin-right: 5px;vertical-align: middle;width:20px; height: 20px;"></image>
</view>
<input class="weui-input" type="number" value="{{passwordMobile}}" name="password" maxlength="13" placeholder="请输入短信验证码" />
<view class="weui-cell__ft">
<button class="weui-vcode-btn sub-font-size-01">获取验证码</button>
</view>
</navigator>
</view>
</view> <view class="page__bd" class="{{loginTypeAreaMobile===true ? 'hide':'' }}" >
<view class="weui-cells">
<navigator url="" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__hd">
<image src="{{localImgPath}}usernameLogin.svg" style="margin-right: 5px;vertical-align: middle;width:20px; height: 20px;"></image>
</view>
<input class="weui-input" type="text" value="{{username}}" name="username" maxlength="13" auto-focus placeholder="用户名" /> </navigator>
<navigator url="" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
<view class="weui-cell__hd">
<image src="{{localImgPath}}usernamePwd.svg" style="margin-right: 5px;vertical-align: middle;width:20px; height: 20px;"></image>
</view>
<input class="weui-input" type="password" value="{{password}}" name="password" maxlength="13" placeholder="请输入密码" />
</navigator>
</view>
</view>
<view class="section btn-area">
<button formType="submit" class="submit-button font_fff">登录</button>
</view>
</form> <view class=" page__bd page__bd_spacing">
<view class="button-sp-area">
<button class="weui-btn weui-btn_mini weui-btn_primary width_p_40 sub-font-size-01" style="margin-right:0.8em" bindtap="changeLoginType" >切换{{loginTypeStr}}登录</button>
</view> </view> </view>
小程序登录方式切换 不做url跳转的更多相关文章
- 做一个开源的小程序登录模块组件(token)
先了解下SSO 对于单点登陆浅显一点的说就是两种,一种web端的基于Cookie.另一种是跨端的基于Token,一般想要做的都优先做Token吧,个人建议,因为后期扩展也方便哦. 小程序也是呢,做成t ...
- 微信小程序登录对接Django后端实现JWT方式验证登录
先上效果图 点击授权按钮后可以显示部分资料和头像,点击修改资料可以修改部分资料. 流程 1.使用微信小程序登录和获取用户信息Api接口 2.把Api获取的用户资料和code发送给django后端 3. ...
- ASP.NET WebAPI 双向token实现对接小程序登录逻辑
最近在学习用asp.net webapi搭建小程序的后台服务,因为基于小程序端和后台二者的通信,不像OAuth(开放授权),存在第三方应用.所以这个token是双向的,一个是对用户的,一个是对接口的. ...
- 微信小程序登录那些事
最近团队在开发一款小程序,都是新手,一边看文档,一边开发.在开发中会遇到各种问题,今天把小程序登录这块的流程整理下,做个记录. 小程序的登录跟平时自己APP这种登录验证还不太一样,多了一个角色,那就是 ...
- 微信小程序登录(包括获取不到unionid的情况)
我们一般都是先获取到微信的 unionid,然后再通过 unionid 去登录自己的网站,就可以关联到用户在自己网站上的 user_id,但是在小程序登录中,有时候可以获取到 unionid,有时候获 ...
- 微信小程序登录流程
小程序登录流程 参考 app.js需要做的 1,首先通过wx.login()拿到code,成功之后,发送数据,请求接口,把code发送给后端,换区openid,sessionKey,unionId,把 ...
- 小程序登录、微信网页授权(Java版)
首先呢,“登录”.“授权”.“授权登录”,是一样的意思,不用纠结. 写小程序授权登录的代码前,需要了解清楚openid与unionid的区别,这里再简单介绍一下: 腾讯有个 “微信·开放平台”,只有企 ...
- 微信小程序Tab选项卡切换大集合
代码地址如下:http://www.demodashi.com/demo/14028.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...
- 基于Shiro,JWT实现微信小程序登录完整例子
小程序官方流程图如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html ...
随机推荐
- USACO Longest Prefix
题目大意:给出一个长字符串,问最长的前缀,使得这个前缀能用给出的一些元素组合而成 思路:暴力dp,dp[i]表示长度为i的前缀能否被表示 /*{ ID:a4298442 PROB:prefix LAN ...
- 2013 Asia acm Hangzhou Regional Contest 杭州现场赛
B Stealing Harry Potter's Precious 题目大意:给定一个n*m的地图,某些点可以走,某些点可以走某些点不可以走,给定一个起点,又给出了k个点k<=4,要求从起点 ...
- 【bzoj2115】[Wc2011] Xor【高斯消元】
题目大意:给出一个无向有权图,找出一条从1到n的路径,使得路径上权值的异或和最大,路径可以重复走 Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条 ...
- BZOJ2281 [SDOI2011]黑白棋 【dp + 组合数】
题目 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. 小A可以移动白色棋子 ...
- Tree 树(树形期望dp)
题意也是需要解释一下的,这个期望步数,是需要求无限步的时候的,就是你只要能到达,都要算上去, 这个我一开始真的没什么思路,打了暴力,搞一个精度,结果全超时了,看来精度定的太细了. 出题人的题解是这个, ...
- poj1930 数论
Dead Fraction Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1258 Accepted: 379 Desc ...
- springmvc简单的xml文件配置步骤
1.配置web.xml的servlet标签,在此标签中配置服务器配置文件 2.配置web.xml的servlet-mapping标签 3.配置application.xml的自动扫描包的位置 4.配置 ...
- 作业调度方案(codevs 1156)
题目描述 Description 我们现在要利用m台机器加工n个工件,每个工件都有m道工序,每道工序都在不同的指定的机器上完成.每个工件的每道工序都有指定的加工时间. 每个工件的每个工序称为一个操作, ...
- 玩转css样式选择器----当父元素只有一个子元素时居中显示,多个水平排列
- @Validated注解
参考: https://blog.csdn.net/changerzhuo_319/article/details/55804651