其他分享
首页 > 其他分享> > nuxt全栈仿美团官网08——获取登录状态和退出

nuxt全栈仿美团官网08——获取登录状态和退出

作者:互联网

平时在有道云上做笔记,直接发到这里格式全乱了,有空整理,大家也可查看有道云链接:

http://note.youdao.com/noteshare?id=652d33bf19e7cb1c1932ffb3bf3ee194&sub=4A2E01D5AA9A46F1A9D8742443C1A43A

获取登录状态

当加载一个页面时需要知道当前是否有用户已经登录,比如登录后首页的登录按钮就会变成 “Hi~ 用户名” 。

  1. 在user组件挂载完后调用接口

async mounted(){ const {status,data:{user}} = await this.$axios.get('/users/getUser') if(status===200){ this.user=user } }

  1. 接口:

router.get('/getUser',async (ctx,nenxt)=>{ if(ctx.isAuthenticated()){ // 如果是登录状态 // 从session里取信息,注意.passport const {username,email} = ctx.session.passport.user ctx.body = { user:username, email } }else{ // 用户名置空,配合前端显示登录按钮 ctx.body = { user: '', email: '' } } })

  1. 必须在index中配置session和redis,注意在start()之前

import session from 'koa-generic-session' import Redis from 'koa-redis' …… //这个在start之前 app.keys = ['mt', 'daoke']; app.proxy = true; app.use(session({key:'mt',prefix:'mt:uid',store:new Redis()}))

  1. 1

 

退出

  1. pages下面新建页面exit.vue(自动配置路由),采用空白模板。在created生命周期钩子里调用接口,当返回code为0时说明退出成功,页面自动跳转到首页

layout:'blank', async created () { const { status, data } = await this.$axios.get('/users/exit') if (status === 200 && data && data.code === 0) { window.location.href = '/' } } /* 此乃源码写法,调不通,不认识window和location,也不知为什么要这么写? middleware: async (ctx) => { let {status,data}=await ctx.$axios.get('/users/exit') if(status===200&&data&&data.code===0){ window.location.href='/' } } */

  1. 接口:

router.get('/exit',async (ctx)=>{ await ctx.logout(); // 验证退出是否成功 if(!ctx.isAuthenticated()){ ctx.body = { code: 0 } } })

  1.  

说明

koa-json还没看到在哪里使用

标签:status,get,08,ctx,全栈,session,user,仿美团,data
来源: https://blog.csdn.net/daoke_li/article/details/100832488