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跳转的更多相关文章

  1. 做一个开源的小程序登录模块组件(token)

    先了解下SSO 对于单点登陆浅显一点的说就是两种,一种web端的基于Cookie.另一种是跨端的基于Token,一般想要做的都优先做Token吧,个人建议,因为后期扩展也方便哦. 小程序也是呢,做成t ...

  2. 微信小程序登录对接Django后端实现JWT方式验证登录

    先上效果图 点击授权按钮后可以显示部分资料和头像,点击修改资料可以修改部分资料. 流程 1.使用微信小程序登录和获取用户信息Api接口 2.把Api获取的用户资料和code发送给django后端 3. ...

  3. ASP.NET WebAPI 双向token实现对接小程序登录逻辑

    最近在学习用asp.net webapi搭建小程序的后台服务,因为基于小程序端和后台二者的通信,不像OAuth(开放授权),存在第三方应用.所以这个token是双向的,一个是对用户的,一个是对接口的. ...

  4. 微信小程序登录那些事

    最近团队在开发一款小程序,都是新手,一边看文档,一边开发.在开发中会遇到各种问题,今天把小程序登录这块的流程整理下,做个记录. 小程序的登录跟平时自己APP这种登录验证还不太一样,多了一个角色,那就是 ...

  5. 微信小程序登录(包括获取不到unionid的情况)

    我们一般都是先获取到微信的 unionid,然后再通过 unionid 去登录自己的网站,就可以关联到用户在自己网站上的 user_id,但是在小程序登录中,有时候可以获取到 unionid,有时候获 ...

  6. 微信小程序登录流程

    小程序登录流程 参考 app.js需要做的 1,首先通过wx.login()拿到code,成功之后,发送数据,请求接口,把code发送给后端,换区openid,sessionKey,unionId,把 ...

  7. 小程序登录、微信网页授权(Java版)

    首先呢,“登录”.“授权”.“授权登录”,是一样的意思,不用纠结. 写小程序授权登录的代码前,需要了解清楚openid与unionid的区别,这里再简单介绍一下: 腾讯有个 “微信·开放平台”,只有企 ...

  8. 微信小程序Tab选项卡切换大集合

    代码地址如下:http://www.demodashi.com/demo/14028.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  9. 基于Shiro,JWT实现微信小程序登录完整例子

    小程序官方流程图如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html ...

随机推荐

  1. 九度oj 题目1131:合唱队形

    题目描述: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, …, K,他们 ...

  2. 九度oj 题目1026:又一版 A+B

    题目描述: 输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数. 输入: 输入格式:测试输入包含若干测试用例.每个测试用例 ...

  3. app审核相关

    app加急审核通道:https://developer.apple.com/contact/app-store/?topic=expedite

  4. BZOJ 1027 [JSOI2007]合金 ——计算几何

    我们可以把每一种金属拆成一个二维向量,显然第三维可以计算出来,是无关的. 我们只需要考虑前两维的情况,显然可以构成点集所形成的凸包内. 然后我们枚举两两的情况,然后可以发现如果所有的点都在一侧是可以选 ...

  5. BZOJ 2438 [中山市选2011]杀人游戏 ——期望DP

    发现每一次死亡的几率相等,所以只需要判断最少问多少人即可. 并且环上的点任意询问都可以. 所以直接Tarjan缩点,然后计算入度为0的点的数目. 但是还有一些情况的时候会减少一次询问,比如说:$1-& ...

  6. Count on a tree(bzoj 2588)

    Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始 ...

  7. EMD距离

    一.场景介绍   最近在研究一个场景:图片质量评分,给一张图片一个预测的分数.   里面提到了用 EMD(Earth Mover’s Distance)算法来评估两张图片之间的分布距离.下面主要讲解下 ...

  8. keepalived学习

    HA集群 keepalived heartbeat corosync cman 功能实现 vrrp协议在Linux主机上以守护进程方式, 能够根据配置文件自动生成ipvs规则 对各RS健康状态检测 组 ...

  9. hdu4862 2014多校B题/ 费用流(最优情况下用不大于K条路径覆盖)(不同的解法)

    题意: 一个数字矩阵,可以出发K次,每次可以从右边或者下面走,要求(在收益最大情况下)覆盖全图,不能则输出-1.(规则:每次跳一步的时候若格子数字相等则获得该数字的能量,每跳一步消耗距离的能量).每个 ...

  10. [bzoj1345][Baltic2007]序列问题_单调栈

    bzoj-1345 Baltic-2007 序列问题 题目大意:对于一个给定的序列a1,…,an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用一个元素max(ai,ai ...