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


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 相关文章推荐
插件:检测javascript的内存泄漏
Mar 04 Javascript
JavaScript DOM 学习第二章 编辑文本
Feb 19 Javascript
JavaScript全排列的六种算法 具体实现
Jun 29 Javascript
js兼容的placeholder属性详解
Aug 18 Javascript
html页面显示年月日时分秒和星期几的两种方式
Aug 20 Javascript
javascript判断数组内是否重复的方法
Apr 21 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
Nov 24 Javascript
js实现PC端根据IP定位当前城市地理位置
Feb 22 Javascript
bootstrap栅格系统示例代码分享
May 22 Javascript
backbone简介_动力节点Java学院整理
Jul 14 Javascript
js数组实现权重概率分配
Sep 12 Javascript
layui button 按钮弹出提示窗口,确定才进行的方法
Sep 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集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
Javascript this关键字使用分析
2008/10/21 Javascript
javascript 常用功能总结
2012/03/18 Javascript
详解Jquery实现ready和bind事件
2016/04/14 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
python中map、any、all函数用法分析
2015/04/21 Python
简述Python2与Python3的不同点
2018/01/21 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
Python基础之函数基本用法与进阶详解
2020/01/02 Python
python ubplot使用方法解析
2020/01/10 Python
使用Python pip怎么升级pip
2020/08/11 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
日本小田急百货官网:Odakyu
2018/07/19 全球购物
综合办公室主任职责
2013/12/16 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
2014年妇联工作总结
2014/11/21 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
标枪加油稿
2015/07/22 职场文书
新郎结婚感言
2015/07/31 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书