微信小程序 后台登录(非微信账号)实例详解


Posted in Javascript onMarch 31, 2017

微信小程序 后台登录

实现效果图:

微信小程序 后台登录(非微信账号)实例详解

最近写了一个工具类的小程序,按需求要求不要微信提供的微信账号登录,需要调取后台登录接口来登录。由于小程序大部分都是调取微信信息登录,很少有调用自己后台来登录的,所以写的时候各种坑,现在把趟好坑的代码共享给大家吧!(PS:如有不妥之处,共勉之。)

微信小程序 后台登录(非微信账号)实例详解

废话不说,直接上代码

找到app.js在里面写如下代码

App({
 onLaunch: function () {
  //调用API从本地缓存中获取数据
  var logs = wx.getStorageSync('logs') || []
  logs.unshift(Date.now())
  wx.setStorageSync('logs', logs)
 },
 globalData: {
  adminUserViewId: "",
  token: "",
  userInfo: null,
  BaseURL:"http://airb.cakeboss.com.cn"
  // BaseURL:"http://192.168.0.107:8080"
 },

敲黑板划重点:上图中的代码片段重要的地方就是:“globalData中的 adminUserViewId: "",token: "" ”

这两个参数是前端需要存储的后台参数,用来标记用户的登录状态的。

然后建一个login文件夹,在login.wxml中写如下代码

<import src="../../components/toast.wxml" />

<!-- is="toast" 匹配组件中的toast提示 如果用dialog的话这就是dialog -->
<template is="toast" data="{{ ...$wux.toast }}" />
<view class="login_container">
 <view class="login_view">
  <text class="login_lable">账号:</text>
  <input class="login_text" placeholder="请输入登录账号" bindinput="listenerUsernameInput"/>
 </view>
 <view class="login_view">
  <text class="login_lable">密码:</text>
  <input class="login_text" placeholder="请输入密码" password="true" bindinput="listenerPasswordInput"/>
 </view>
 <view>
  <button class="login_button" bindtap="loginAction">登录</button>
 </view>
</view>

然后建一个login文件夹,在login.wxss中写如下代码

.login_container {
 margin-top: 30px;
}

.login_view {
 width: calc(100% - 40px);
 padding: 0 20px;
 line-height: 45px;
 height: 45px;
 margin-bottom: 20px;
}

.login_text {
 float: left;
 height: 45px;
 line-height: 45px;
 font-size: 12px;
 border: 1px solid rgb(241, 242, 243);
 padding: 0 12px;
 width: calc(100% - 70px);
 border-radius: 4px;
}

.login_lable {
 float: left;
 font-size: 12px;
 width: 40px;
}

.login_button {
 width: 150px;
 background: green;
 color: #fff;
}

在login.js中写如下代码

//login.js
//获取应用实例
var app = getApp()
var util = require('../../utils/util.js');

Page({
 data: {
  motto: 'Hello World',
  username: "",
  password: ""
 },
 onLoad(options) {
  // 初始化提示框
  this.$wuxToast = app.wux(this).$wuxToast
 },
 /** 监听帐号输入 */
 listenerUsernameInput: function (e) {
  this.data.username = e.detail.value;
 },
 /** 监听密码输入 */
 listenerPasswordInput: function (e) {
  this.data.password = e.detail.value;
 },
 // 登录按钮点击事件
 loginAction: function () {

  var userName = this.data.username;
  var passwords = this.data.password;
  var that = this;

  if (userName === "") {
   that.$wuxToast.show({
    type: 'text',
    timer: 1000,
    color: '#fff',
    text: "用户名不能为空!",
    success: () => console.log('用户名不能为空!')
   })
   return;
  } if (passwords === "") {
   that.$wuxToast.show({
    type: 'text',
    timer: 1000,
    color: '#fff',
    text: "密码不能为空!",
    success: () => console.log('密码不能为空!')
   })
   return;
  }

  //加载提示框
  util.showLoading("登录中...");

  var urlStr = app.globalData.BaseURL + '/api/adminUser/login';
  wx.request({
   method: "POST",
   url: urlStr, //仅为示例,并非真实的接口地址
   data: util.json2Form({
    username: userName,
    password: passwords
   }),
   header: {
    "Content-Type": "application/x-www-form-urlencoded"
   },
   success: function (res) {
    util.hideToast();
    console.log(res.data);
    var code = res.data.code;
    if (code === 200) {
     // 后台传递过来的值
     var adminUserViewId = res.data.data.adminUserViewId;
     var token = res.data.data.token;
     // 设置全局变量的值
     app.globalData.adminUserViewId = res.data.data.adminUserViewId;
     app.globalData.token = res.data.data.token;
     // 将token存储到本地
     wx.setStorageSync('adminUserViewId', adminUserViewId);
     wx.setStorageSync('token', token);
     console.log("登录成功的adminUserViewId:" + adminUserViewId);
     console.log("登录成功的token:" + token);
     // 切换到首页
     wx.switchTab({
      url: '/pages/index/index'
     })
    } else {
     that.$wuxToast.show({
      type: 'text',
      timer: 1000,
      color: '#fff',
      text: res.data.msg,
      success: () => console.log('登录失败,请稍后重试。' + res.data.msg)
     })
    }
   },
   fail: function () {
    util.hideToast();
    console.log("登录失败");
    that.$wuxToast.show({
     type: 'text',
     timer: 1000,
     color: '#fff',
     text: '服务器君好累?,请稍后重试',
     success: () => console.log('登录失败,请稍后重试。')
    })
   }
  })
 }
})

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
js实现权限树的更新权限时的全选全消功能
Feb 17 Javascript
Extjs中使用extend(js继承) 的代码
Mar 15 Javascript
Package.js  现代化的JavaScript项目make工具
May 23 Javascript
JavaScript必知必会(三) String .的方法来自何方
Jun 08 Javascript
jquery购物车结算功能实现方法
Oct 29 Javascript
vue iview组件表格 render函数的使用方法详解
Mar 15 Javascript
animate.css在vue项目中的使用教程
Aug 05 Javascript
微信小程序使用wxParse解析html的实现示例
Aug 30 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
Apr 18 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
Dec 25 Javascript
Vue filter 过滤器、以及在table中的使用介绍
Sep 07 Javascript
在JavaScript中如何使用宏详解
May 06 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
Mar 31 #Javascript
ES6新特性之Object的变化分析
Mar 31 #Javascript
ES6新数据结构Set与WeakSet用法分析
Mar 31 #Javascript
ES6新数据结构Map功能与用法示例
Mar 31 #Javascript
基于AGS JS开发自定义贴图图层
Mar 31 #Javascript
Node.js使用Express创建Web项目详细教程
Mar 31 #Javascript
ES6使用let命令更简单的实现块级作用域实例分析
Mar 31 #Javascript
You might like
一周让你学会PHP 不错的学习资料
2009/02/06 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
Javascript自定义事件详解
2017/01/13 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
JS判断两个数组或对象是否相同的方法示例
2019/02/28 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
python如何将两个txt文件内容合并
2019/10/18 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
python 安装impala包步骤
2020/03/28 Python
python PIL模块的基本使用
2020/09/29 Python
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
校运会广播稿100字
2014/01/27 职场文书
项目建议书模板
2014/05/12 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
初中教师个人工作总结
2015/02/10 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript
Python爬虫之爬取二手房信息
2021/04/27 Python
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL