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 题目1104:整除问题

    题目描述: 给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除. 输入: 两个整数n(2<=n<=1000),a(2<=a<=1000) 输出: 一个整数. ...

  2. 推荐两个不错的flink项目

    最近flink真是风生水起,但是浪院长看来这不过是阿里错过了创造spark影响力之后,想要在flink领域创建绝对的影响力.但是,不可否认flink在实时领域确实目前来看独树一帜,当然也有它不适合的地 ...

  3. leetcode 347 priority,map的使用

    主要是对次数进行排序,然后去前几个最大次数的值,输出即可 class Solution { public: vector<int> topKFrequent(vector<int&g ...

  4. 团伙(codevs 2597)

    题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的朋友是我的朋友: 我敌人的敌人也是我的朋友 ...

  5. StoryBoard中,TableView位置总是在顶部出现空白的解决

      重设TableView的 contentInset 属性可解决. 
_tableView.contentInset = UIEdgeInsetsMake( -30, 0, 0, 0);


  6. (48)C#网络4 web

    WebClient 类 提供用于将数据发送到和接收来自通过 URI 确认的资源数据的常用方法 private delegate string delegatehWeb(); private void ...

  7. Js 流程控制

    流程控制 顺序.分支.循环 顺序结构 代码一行一行从上往下执行并解析 分支结构 if语句 switch语句 if语句 单分支 if(条件表达式){ //语句块 } 含义:当条件表达式为真的时候就执行里 ...

  8. sqlplus登陆scott用户,以及退出连接

    进入sqlplus界面 即登陆成功,PLsql也一样 退出连接:

  9. java集合系列之ArrayList源码分析

    java集合系列之ArrayList源码分析(基于jdk1.8) ArrayList简介 ArrayList时List接口的一个非常重要的实现子类,它的底层是通过动态数组实现的,因此它具备查询速度快, ...

  10. 【chrome错误】Cross origin requests are only supported for protocol schemes: http, data,chrome-extension, https, chrome-extension-reso

    使用ajax请求本地文件,chrome会报跨域错误. XMLHttpRequest cannot loadfile:///C:/Users/Li/Desktop/images/alist.json.C ...