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. 【Luogu】P1948电话线(二分SPFA)

    题目链接 二分最长的电话线长度.把所有大于这个长度的边权设成1,小于等于的设成零,然后跑SPFA看dis[n]是否>k.若>k则l=mid+1 否则r=mid-1 放代码 #include ...

  2. Tree 树(树形期望dp)

    题意也是需要解释一下的,这个期望步数,是需要求无限步的时候的,就是你只要能到达,都要算上去, 这个我一开始真的没什么思路,打了暴力,搞一个精度,结果全超时了,看来精度定的太细了. 出题人的题解是这个, ...

  3. linux下面MySQL变量修改及生效

    今天在访问mysql项目的时候突然报500错误,没有找到连接,因此想到mysql的连接时间. mysql> show global variables; 主要就是连接时间是28800(8小时), ...

  4. gitweb 搭建教程

    1. 前言 git 是一个版本控制工具,类似svn. 本文内容主要涉及git仓库通过浏览器访问(用web的方式去查看git提交历史记录,tag,branch等信息),即gitweb. 效果图: 在这里 ...

  5. CKeditor如何实现图片上传功能

    http://makaiyuan.blog.51cto.com/5819595/1049521 如何在数据库中导入excel文件内的数据:http://jingyan.baidu.com/album/ ...

  6. hdu 1224 最长路

    开始用dijkstra直接求,发现不行,算法问题(1-2,(30),2-4(20),1--3(10),3--4(100)最后一个点无法更新,导致错误),后用取负,加大数法也没过. 现在(寒假了):求负 ...

  7. LeetCode OJ--Valid Parentheses

    http://oj.leetcode.com/problems/valid-parentheses/ 对栈的考察,看括号的使用方式是否合法. class Solution { public: bool ...

  8. 2017 ACM/ICPC 广西邀请赛 题解

    题目链接  Problems HDOJ上的题目顺序可能和现场比赛的题目顺序不一样, 我这里的是按照HDOJ的题目顺序来写的. Problem 1001 签到 #include <bits/std ...

  9. 关于MySQL存储过程异常处理的一点心得

    DROP PROCEDURE IF EXISTS `SP_MODEL`; DELIMITER ;;CREATE PROCEDURE `SP_MODEL`(IN V_TYPE INT)BEGIN /** ...

  10. T3185 队列练习1 codevs

    http://codevs.cn/problem/3185/ 题目描述 Description 给定一个队列(初始为空),只有两种操作入队和出队,现给出这些操作请输出最终的队头元素. 操作解释:1表示 ...