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


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 冒号 使用说明
Jun 06 Javascript
jQuery异步验证用户名是否存在示例代码
May 21 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
Dec 08 Javascript
实例详解jQuery表单验证插件validate
Jan 18 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
May 25 Javascript
Google 地图API资料整理及详细介绍
Aug 06 Javascript
使用JSON作为函数的参数的优缺点
Oct 27 Javascript
JQuery实现定时刷新功能代码
May 09 jQuery
8 个有用的JS技巧(推荐)
Jul 03 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
May 25 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
Jul 12 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
Jan 29 Vue.js
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不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
JS 遮照层实现代码
2010/03/31 Javascript
javascript椭圆旋转相册实现代码
2012/01/16 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
小程序如何支持使用 async/await详解
2019/09/12 Javascript
在Django框架中编写Contact表单的教程
2015/07/17 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
python 使用get_argument获取url query参数
2017/04/28 Python
python读取LMDB中图像的方法
2018/07/02 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
解决python脚本中error: unrecognized arguments: True错误
2020/04/20 Python
全方位了解CSS3的Regions扩展
2015/08/07 HTML / CSS
HTML5 video视频字幕的使用和制作方法
2018/05/03 HTML / CSS
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
会议邀请书范文
2014/02/02 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
2015年推普周活动总结
2015/03/27 职场文书
人事任命通知
2015/04/20 职场文书
PHP命令行与定时任务
2021/04/01 PHP
python实现简单反弹球游戏
2021/04/12 Python
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle