微信小程序退出按钮

微信小程序退出账号的前提条件是用户已登陆,且在前端页面和后端服务已记录了用户的登陆状态。退出登陆的操作,相当于清除用户登陆状态的操作。

因此微信小程序实现退出账号的具体流程包括以下几点:

1、用户登陆操作:

(1)微信小程序调用wx.login获取登录凭证(code)。

(2) 将code传递到后端服务,通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid),并生成与用户一一对应的token值,保存起来,用作用户身份的校验,同时返回给微信小程序客户端。

(3)微信小程序获取到token令牌,保存到本地,即可作为已登陆状态的凭证。

前端代码为:

const login =  function () {

wx.showLoading({ title: 登陆中 })

wx.login().then(res => {

if (res.errMsg === login:ok) {

Api.login(res.code).then(data => {

wx.hideLoading()

wx.setStorageSync(token, data) })

}})}

后端服务代码为:

async login(jsCode) {

const { ctx, app } = this;

const APPID = app.config.miniProgram.appId;

const SECRET = app.config.miniProgram.appSecret;

const url = `https://api.weixin.qq.com/sns/jscode2session?appid=${APPID}&secret=${SECRET}&js_code=${jsCode}&grant_type=authorization_code`;

const res = await ctx.curl(url, { method: GET, dataType: json });

const openid = res.data.openid;

const session_key = res.data.session_key;

const str = await app.redis.get(openid);

if (str && JSON.parse(str).accessToken) { // 已登陆

const oldAccessToken = JSON.parse(str).accessToken;

await app.redis.del(oldAccessToken); // 删除token,实现单点登陆

await app.redis.del(openid);}

const accessToken = await ctx.helper.createWxToken(openid, session_key); // 生成新的token

return accessToken;}

2、退出登陆操作:

(1)点击“退出账号”按钮,调用ajax请求后端退出登陆接口并传递用户token,若退出成功,则清除当前用户登陆状态和token信息。

(2)刷新当前页面数据,清除页面上的用户信息。

(3)后端API接收到客户端传递的用户token,查询数据库判断用户是否已登陆,若登陆,则删除或将token置为无效。

前端代码为:

const logout =  function () {

wx.showLoading({ title: 退出登陆中 })

const token = wx.getStorageSync(token)

Api.logout({ token: token }).then(data => {

wx.hideLoading()

wx.removeStorageSync(token)

refreshPageData()

})}

后端代码为:

async logout(accessToken) {

const { ctx, app } = this;

const userId = await app.redis.get(accessToken);

if (!userId) ctx.throw(400, 登陆状态已失效);

await app.redis.del(userId); // 删除userId

await app.redis.del(accessToken); // 删除token

}

扩展资料:

1、微信小程序账号密码登陆和授权登陆后,token保存在loacalStore中,在每次加载接口时,携带上token令牌,向服务端传递已登陆的状态。

2、微信小程序退出登陆需清除登陆状态,当调用微信小程序API中的wx.login()执行登陆操作,通过登陆接口获取到code后需调用后端接口生成token, 由于安全问题,勿在前端使用密钥生成。在执行退出登陆操作时,需清除localStorage 中缓存的token及用户信息,并刷新当前页面数据。

微信小程序退出账号的前提条件是用户已登陆,且在前端页面和后端服务已记录了用户的登陆状态。退出登陆的操作,相当于清除用户登陆状态的操作。因此微信小程序实现退出账号的具体流程包括以下几点:1、用户登陆操作:(1)微信小程序调用wx.login获取登录凭证(code)。(2) 将code传递到后端服务,通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid),并生成与用户一一对应的token值,保存起来,用作用户身份的校验,同时返回给微信小程序客户端。(3)微信小程序获取到token令牌,保存到本地,即可作为已登陆状态的凭证。前端代码为:const login = function () {。wx.showloading({ title: 登陆中 })。wx.login().then(res => {。if (res.errmsg === login:ok) {。api.login(res.code).then(data => {。wx.hideloading()。wx.setstoragesync(token, data) })。}})}。后端服务代码为:async login(jscode) {。const { ctx, app } = this。const appid = app.config.miniprogram.appid。const secret = app.config.miniprogram.appsecret。const url = `https://api.weixin.qq.com/sns/jscode2session。appid=${appid}&secret=${secret}&js_code=${jscode}&grant_type=authorization_code`。const res = await ctx.curl(url, { method: get, datatype: json })。const openid = res.data.openid。const session_key = res.data.session_key。const str = await app.redis.get(openid)。if (str && json.parse(str).accesstoken) { // 已登陆。const oldaccesstoken = json.parse(str).accesstoken。await app.redis.del(oldaccesstoken)。// 删除token,实现单点登陆。await app.redis.del(openid)。}。const accesstoken = await ctx.helper.createwxtoken(openid, session_key)。// 生成新的token。return accesstoken。}。2、退出登陆操作:(1)点击“退出账号”按钮,调用ajax请求后端退出登陆接口并传递用户token,若退出成功,则清除当前用户登陆状态和token信息。(2)刷新当前页面数据,清除页面上的用户信息。(3)后端api接收到客户端传递的用户token,查询数据库判断用户是否已登陆,若登陆,则删除或将token置为无效。前端代码为:const logout = function () {。wx.showloading({ title: 退出登陆中 })。const token = wx.getstoragesync(token)。api.logout({ token: token }).then(data => {。wx.hideloading()。wx.removestoragesync(token)。refreshpagedata()。})}。后端代码为:async logout(accesstoken) {。const { ctx, app } = this。const userid = await app.redis.get(accesstoken)。if (。userid) ctx.throw(400, 登陆状态已失效)。await app.redis.del(userid)。// 删除userid。await app.redis.del(accesstoken)。// 删除token。}。现在的微信里面有很多小程序,那退出账号只要写用手按住轻轻的向上一滑就可以了,然后你下次在使用的时候她就又重新出现了。这个好像退出不了吧!都是微信自带的我并没有写过这个功能
但是我觉得大体的思路可能是在缓存中缓存了一个是否登录的变量(设为isLogin) 在"我的"界面中以及下单的页面会判断isLogin的值 来限制用户是否可以进行下一步的操作

当用户登录的时候会把一些信息(这些信息应该也是存在缓存中)返回来并并且将isLogin的值改为登录状态
而当退出的时候就将isLogin的状态改为未登录,并且将登录时返回的信息删除
喜欢阅读
  • 护花战神

    护花战神

    十六年前,他是豪门弃子,落魄街头。是她,用小小的棍棒赶走野狗。十六年后,他是红海战神,权势滔天、富可敌国。战神归来,甘愿当上门女婿。当我牵起你的手,这天下就在你的掌中!

  • 功盖三村

    功盖三村

    穷乡僻壤一乡村,山清水秀桃花源;权倾天下小村官,富可敌国大富翁。专门培养白富美,对外输出高富帅;老子地盘我做主,别拿村长不当官。请看屌丝村长权色无双的逆天之路。

  • 一胎双宝送上门

    一胎双宝送上门

    黑夜里,清冷的气息靠近,在她生命里留下了不可磨灭的痕迹。五年后,两只萌宝找上门来。妈咪,我们来接你回家!一路打怪升级虐渣渣!万般疼爱宠溺甜掉牙!

  • 无双阔少

    无双阔少

    上门女婿受尽委屈,只为可以得到心爱之人的芳心。然而,事与愿违......今天你对我爱答不理,明天我让你高攀不起!

  • 细雨生春草

    细雨生春草

    一条项链,她对他魂牵梦萦,结婚三年,他待她相敬如宾,一次醉酒,他亲吻她的时候嘴里却喊着她亲姐的名字。毅然离开,她留下离婚协议出国进修,却不知肚子里已经揣了两个宝贝。当浴火重生的她华丽归来后,看到那个男人身边和姐姐相似的女人后只是讽刺一笑,不过都是个可悲的替身而已。京城人都传言,霍总裁对他的妻子情有独钟有求必应,她却冷漠地看着面前的男人:“霍先生,好狗不挡道。”他却笑得势在必得:“温女士,别忘了你现在还是我的合法妻子。”当年的一错再错,他如今绝对不会再重演。

  • 医圣宗师

    医圣宗师

    奉师傅之命,下山成亲。当大多数人还在苦读时,他已经是一位医道大师,金钱,美女,总裁,小弟,岳父岳母,通通搞定!!!

  • 乡野神豪

    乡野神豪

    李大壮本是普普通通的小农民,死而复生,因祸得福,在祖宗棺材内获得金葫芦。拥有金葫芦的李大壮,从此成为超富小农民,坐拥权势美女,走上人生巅峰。

  • 仙帝重回地球

    仙帝重回地球

    李奇走火入魔重生地球高中时期。前世的怯弱,化为今世的桀骜,以仙帝之姿,横扫都市!凭借重生的记忆,修仙赚钱两不误,校花总裁常伴左右。如果你是一个废物,就老老实实被人踩在脚下。如果你是一位大帝,就将所有废物都踩在脚下!

  • 猜你喜欢
  • 微信小程序自带按钮
  • 微信小程序按钮大小
  • 微信小程序按钮图标
  • 微信小程序悬浮按钮
  • 微信小程序圆形按钮
  • 微信小程序返回按钮
  • 微信小程序开关按钮
  • 微信小程序添加按钮
  • 微信小程序按钮样式
  • 微信小程序按钮
  • 热门推荐
  • 余额宝替代品 知乎
  • 德国metraxgmbh
  • 农业生产技术论文
  • 校园里的友善是什么
  • african young girls
  • 网线分流器多少钱
  • 奥美 电话面试
  • 忆江南拼音版朗读视频
  • fioread
  • 贵州2760个贫困村名单
  • grow gorgeous鐢ㄧ湁姣
  • 清水里的刀子读后感500
  • 电驴基地最新ip2018
  • 古い mmd
  • 如何恢复icloud的照片
  • 普法栏目剧花若离枝六
  • 小型热收缩机
  • 用emoji表情拼生日快乐
  • sql 添加字段指定位置
  • 宝宝感冒拉稀怎么回事
  • All Right Reserved 雁塔文明网