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


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 函数参数是传值(byVal)还是传址(byRef) 分享
Jul 02 Javascript
js调用css属性写法
Sep 21 Javascript
利用js(jquery)操作Cookie的方法说明
Dec 19 Javascript
jQuery实现鼠标经过图片预览大图效果
Apr 10 Javascript
js控制鼠标事件移动及移出效果显示
Oct 19 Javascript
jQuery Validate表单验证深入学习
Dec 18 Javascript
JavaScript中数组Array方法详解
Feb 27 Javascript
详解 vue.js用法和特性
Oct 15 Javascript
微信小程序template模板实例详解
Oct 27 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
Jan 29 Javascript
浅谈Vue为什么不能检测数组变动
Oct 14 Javascript
微信小程序 生成携带参数的二维码
Oct 23 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中如何调用webservice的实例参考
2013/04/25 PHP
PHP多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
php查询ip所在地的方法
2014/12/05 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
jquery 表单取值常用代码
2009/12/22 Javascript
Js基础学习资料
2010/11/23 Javascript
javascript的动态加载、缓存、更新以及复用(一)
2014/06/09 Javascript
JQuery设置获取下拉菜单某个选项的值(比较全)
2014/08/05 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
python实现定时同步本机与北京时间的方法
2015/03/24 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
如何利用find命令查找文件
2016/11/18 面试题
销售人员中英文自荐信
2013/09/22 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
文秘个人求职信范文
2014/04/22 职场文书
国际商务专业求职信
2014/07/15 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
部门主管竞聘书
2015/09/15 职场文书
quickjs 封装 JavaScript 沙箱详情
2021/11/02 Javascript