微信小程序——用户登录,退出,缓存(基于官方文档最新版)

news/2024/7/19 15:01:00 标签: js, 前端, 小程序, 微信

微信小程序——用户登录,退出,缓存

  • 官方API说明
    • 文档地址
    • 授权登录
    • 设置缓存wx.setStorageSync(string key, any data)
      • 查看
    • 获取缓存any wx.getStorageSync(string key)
    • 移除缓存 wx.removeStorageSync(string key)
  • 1.最简单(不使用es6语法)
  • 2.使用es6语法
  • 3.简化es6和逻辑的登录
  • 4.退出登录(使用es6+弹窗判断)
  • 5.使用缓存技术实现保持登录状态以及登出清空缓存
    • 清空缓存注意对应你设置的缓存名

官方API说明

文档地址

官方文档

授权登录

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

设置缓存wx.setStorageSync(string key, any data)

在这里插入图片描述

查看

如果你发现你有下图所示的说明设置缓存成功
在这里插入图片描述

获取缓存any wx.getStorageSync(string key)

在这里插入图片描述

移除缓存 wx.removeStorageSync(string key)

看名字就知道是移除缓存
在这里插入图片描述

1.最简单(不使用es6语法)

js">data: {
    userName:"",
    userhead:"",
    judgeLogin:false
  },

login:function(){
	let that = this;
	wx.getUserProfile({
      desc: '授权登录',
      success:function(res){
        console.log("success",res.userInfo)
        this.setData({
          userName:res.userInfo.nickName,
          userhead:res.userInfo.avatarUrl,
          judgeLogin:true
        })
      },
      fail:function(res){
        console.log("fail")
      }
    })
}

2.使用es6语法

js">data: {
    userName:"",
    userhead:"",
    judgeLogin:false
  },
  
  catchLogin(){
    wx.getUserProfile({
      desc: '授权登录',
      success:res=>{
        console.log("success",res.userInfo)
        this.setData({
          userName:res.userInfo.nickName,
          userhead:res.userInfo.avatarUrl,
          judgeLogin:true
        })
      },
      fail:res=>{
        console.log("fail")
      }
    })
  },

3.简化es6和逻辑的登录

wxml中

<!--pages/user/user.wxml-->
<view class="user_info_wrap" >
    <view class="user_img_wrap" wx:if="{{userinfo}}">
        <image class="user_bg" src="{{userinfo.avatarUrl}}"></image>
        <view class="user_info">
            <image class="user_icon" src="{{userinfo.avatarUrl}}"></image>
            <view class="user_name">{{userinfo.nickName}}</view>
        </view>
    </view>
    <view class="user_btn" wx:else bindtap="catchLogin">
        登录
    </view>
</view>

js

js">data: {
    userinfo:''
  },
  
  catchLogin(){
    wx.getUserProfile({
      desc: '授权登录',
      success:res=>{
        console.log("success",res.userInfo)
        this.setData({
          userinfo:res.userInfo
        })
      },
      fail:res=>{
        console.log("fail")
      }
    })
  },

4.退出登录(使用es6+弹窗判断)

js">Logout:function(){
    if(this.data.userinfo){
      wx.showModal({
        cancelColor: 'cancelColor',
        title:'是否确定退出',
        success: res =>{
          if(res.confirm){
            console.log("用户确定退出");
            this.setData({
              userinfo:''
            })
          }else{
            console.log("用户取消了退出")
          }
        }
      })
      
    }else{
      wx.showModal({
        cancelColor: 'cancelColor',
        title:'您还未登录!',
        success:function(res){
          if(res.confirm){
            console.log("用户未登录")
          }
        }
      })
    }
    
  },

5.使用缓存技术实现保持登录状态以及登出清空缓存

清空缓存注意对应你设置的缓存名

js">wx.removeStorageSync('userDetails')
js">// pages/user/user.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userinfo:''
  },
  
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad:function() {
    let user = wx.getStorageSync('userDetails')
    this.setData({
      userinfo:user
    })
  },
  catchLogin(){
    wx.getUserProfile({
      desc: '授权登录',
      success:res=>{
        let user = res.userInfo
        console.log("success",user)
        wx.setStorageSync('userDetails', user)
        this.setData({
          userinfo:user
        })
      },
      fail:res=>{
        console.log("fail")
      }
    })
  },

  Logout:function(){
    if(this.data.userinfo){
      wx.showModal({
        cancelColor: 'cancelColor',
        title:'是否确定退出',
        success: res =>{
          if(res.confirm){
            console.log("用户确定退出");
            this.setData({
              userinfo:''
            })
            
            wx.removeStorageSync('userDetails')
          }else{
            console.log("用户取消了退出")
          }
        }
      })
      
    }else{
      wx.showModal({
        cancelColor: 'cancelColor',
        title:'您还未登录!',
        success:function(res){
          if(res.confirm){
            console.log("用户未登录")
          }
        }
      })
    }
  },


http://www.niftyadmin.cn/n/1717642.html

相关文章

sqlserver数据库练习4

sqlserver数据库练习4sqlserver数据库练习4视图问题解决方法在前面加go&#xff08;1&#xff09;利用T-SQL语句在数据库中建立视图score_top&#xff0c;要求在该视图中显示各门课程的CID及其对应的score_max&#xff08;即课程的最高分&#xff09;。 查询该视图查看结果。&a…

sqlserver数据库练习5

sqlserver数据库练习5前言讲解问题题目1. 利用对象资源管理器创建Tadmin登录帐号&#xff0c;密码为myteacher&#xff0c;默认数据库为teachingData。提示&#xff1a;选择与数据库文件夹并列的安全性文件夹下的登录名进行创建即可2. 利用对象资源管理器在“TeachingData”数据…

html自定义打印循环,如何使用for循环将重复的javascript片段打印到HTML文档中?

自学业余爱好者在这里试图创建一个工作表,帮助学生练习联立方程。我正在为如何重复运行下面的代码来生成多个问题而挣扎。我认为问题出在document.getElementsByClassName(“问题”)[i].getElementsByClassName(“part”)[n].innerHTML行有人能给我解释一下为什么像这样用for循…

Linux操作习题期末复习(基于centos7)命令+软件安装+环境配置

Linux操作习题期末复习Linux基础命令查询ip地址关闭计算机重启计算机用户管理创建用户组创建用户的同时指定用户组修改用户的组创建用户指定/修改用户密码删除用户切换用户永久修改用户名查询命令查询当前目录管道查询文件复制复制单文件复制多文件复制目录软链接的使用 ln -s命…

Ubuntu20安装微信,QQ

安装微信 须知&#xff1a;官网上是没有微信Linux版本的&#xff0c;我们需要到gitee或GitHub上搜索下载&#xff0c;而且Linux上不支持图片传输&#xff0c;而且会有中文乱码的问题 等我解决了会再出一篇解决方法 安装依赖 su root apt install wget g git安装deepin-wine …

html如何绘制半圆,CSS 系列-如何画一个半圆?

在日常使用 CSS 的过程中&#xff0c;我们经常会遇到非常多种的需求&#xff0c;例如对话框&#xff0c;画三角形&#xff0c;画半圆&#xff0c;圆角矩形&#xff0c;阴影&#xff0c;图文列表&#xff0c;导航栏&#xff0c;水平居中&#xff0c;垂直居中等等。本人结合学习的…

数据库期末复习

数据库期末复习数据库的基本概念数据&#xff08;Data&#xff09;数据库&#xff08;DB&#xff09;数据库系统&#xff08;DBS&#xff09;数据库管理系统(DBMS)数据库管理员数据库系统的三级模式结构&#xff1a;模式&#xff1a;外模式&#xff1a;内模式&#xff1a;总结&…