美文网首页微信小程序微信小程序开发者小程序
微信小程序后台登录(非微信账号登录)

微信小程序后台登录(非微信账号登录)

作者: 罗小耳 | 来源:发表于2017-03-28 17:08 被阅读3087次

最近写了一个工具类的小程序,按需求要求不要微信提供的微信账号登录,需要调取后台登录接口来登录。由于小程序大部分都是调取微信信息登录,很少有调用自己后台来登录的,所以写的时候各种坑,现在把趟好坑的代码共享给大家吧!(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('登录失败,请稍后重试。')
        })
      }
    })
  }
})

相关文章

网友评论

  • 知ou週:if (res.data.code == 1) {
    // 登录成功储存会员信息
    wx.clearStorageSync();
    wx.setStorageSync('member', res.data.return);

    // 跳转到会员页面
    wx.showToast({
    title: "登录成功",
    icon: 'success',
    duration: 2000,
    success: function () {
    wx.reLaunch({ url: "../member/my" });
    // wx.navigateTo({url: "../member/index"});
    // wx.redirectTo({url: "../member/index"});
    // wx.navigateTo({ url: "../member/my" });
    },

    })
    }

    你好这是我自己写的 我能从服务器获取会员的信息 但是无法存储 提示登陆成功跳转到会员中心 有自动跳转到登录页面
  • 无名氏000:你好,请问这个components/toast.wxml 里面要怎么写?:grin:
  • 54cb8d23ad02:进来后直接到登录页面,需要在app.js中进行判断吧。
    54cb8d23ad02:@罗小耳 虽然不影响页面跳转,但是会报一个错误Expected updated data but get first rendering data,一直未能解决
    罗小耳:@海石天 在首页判断
    即app.json的第一个页面里面,出现的第一个页面的js文件中判断
  • QZL_如初:你好,问一下,这里的token是什么,从后台传来的吗,后台是怎么得到这个值的呢
    罗小耳:@QZL_黎明有星辰 登录时后台生成的token
  • 2883b092f846:很厉害很厉害, 看完就懂
  • c08a4bf51035:你好,请问这个components/toast.wxml 里面要怎么写?
  • e13b4a1a34ad:为啥没有后台的执行逻辑
  • 紫米初心:很感谢你
  • 1b3e93ffc1ae:微信的用户量。。。使用微信登录可以解决注册的麻烦 , 如果说一定要把用户信息在自己后台后保存,可以生成一个随机码来绑定用户的微信账号就可以了,要麻烦用户重新去注册还是不太好
    b2c7cfa5734e:麻烦问一下,怎么绑定用户的微信账号?
  • 3cbc2baf4fc8:你好,想请问一下,账号的注册该怎样实现?
    罗小耳:@这个手刹不太0 就是正常跟后台联调的注册流程
  • 天下雪:请问作者,是否有完整的demo可以下载学习一下?
    罗小耳:@天下雪 公司项目,没有Demo
  • 知晓程序:你好!我们是爱范儿旗下专注于小程序生态的公众号知晓程序(微信号 zxcx0101)。我们很赞赏你的文章,希望能获得转载授权。授权后,你的文章将会在知晓程序社区(minapp.com)、爱范儿、AppSo 等渠道发布。此外,由于第三方同步抓取功能,您的内容也可能会被同步发表到今日头条、搜狐、网易号等,我们会注明来源和作者姓名。

    非常感谢~~~
    知晓程序:@罗小耳 感谢~~
    罗小耳:@知晓程序 :blush::blush::blush:欢迎转载
  • 汗青fullstack:坑在哪里?:smile:
    汗青fullstack:@罗小耳 👌
    罗小耳:@汗青fullstack :flushed: 坑被我解决了,直接上了解决版:joy: 就不上坑了吧

本文标题:微信小程序后台登录(非微信账号登录)

本文链接:https://www.haomeiwen.com/subject/lrojottx.html