• Vue(vue+node.js+mongodb)_退出登录


    一、前言                                                                    

    二、主要内容                                                             

    1、当用户登录之后才会出现“退出登录按钮”

    2、登录之后

     3、这里使用mint-ui, “退出登录”按钮的显示隐藏和是否有userInfo的值是一样的,如果存在userInfo就显示这个退出按钮,如果没有登录就不显示

     <section class="profile_my_order border-1px">
                  <mt-button type="danger" style=" 100%" @click="logout" v-if="userInfo._id">退出登录</mt-button>
     </section>

    4、点击退出按钮的时候调用,logout方法,给用户一个提示

     methods:{
               logout(){
    
                   MessageBox.confirm('确定退出登录吗?').then(
                       action => {
                           //确定,确定要请求数据
                           this.$store.dispatch('logout')
                    },
                    action => {
                        //取消
                        console.log("取消退出")
                });
               }
           }

    5、用vuex来进行状态管理,此时state.js 

    (1)state.js

    /*定义状态对象*/
    export default{
        
        userInfo:{}//保存提交的用户信息
    }

    (2)mutation-type.js

    export const RECEIVE_USER_INFO = 'receive_user_info'//接受用户信息
    export const RESET_USER_INFO = 'reset_user_info'//重置用户信息

    (3)mutations.js

    /*
    vuex的mutations.js模块
    */
    
    import {
          RECEIVE_USER_INFO,
          RESET_USER_INFO
    
    } from './mutation-types'
    export default{
        //这个是方法名,action 和mutation交互的时候传的是包含这个数据的对象
    
          [RECEIVE_USER_INFO] (state, {userInfo}){
                state.userInfo = userInfo
          },
          [RESET_USER_INFO] (state){
                state.userInfo = {}
          }
    
    }

    (4)actions.js

    /*
    vuex的actions.js模块
    */
    import {
        
        RECEIVE_USER_INFO,
        RESET_USER_INFO
    
    } from './mutation-types'
    
    //三个接口函数
    import {
        
        reqUserInfo,
        reqLogout
    
    } from '../api'
    
    export default{
        
    
        //同步记录用户信息
        recordUser ({commit},userInfo){
            commit(RECEIVE_USER_INFO,{userInfo})
            
        },
    
        //异步获取用户信息,让应用一开始就调用这个方法
        //获取商家列表
        async getUserInfo ({commit, state}){
            //1.发送异步ajax请求,调用上面那个方法,现在的数据是在state里面
            const result = await reqUserInfo()
            //2.提交一个mutation
            if(result.code == 0){
                const userInfo = result.data
                commit(RECEIVE_USER_INFO,{userInfo:result.data})
            }
        },
    
        async logout({commit, state}){
            const result = await reqLogout()
            if(result.code == 0){
                commit(RESET_USER_INFO)//这个时候重置user信息
            }
        }    
    }

    (5)点击这个确定按钮的时候会触发actions中的logout方法

    async logout({commit, state}){
            const result = await reqLogout()
            if(result.code == 0){
                commit(RESET_USER_INFO)//这个时候重置user信息
            }
        }  

    (6)logout中的提交commit 到mutations中去,重置user信息

    /*
    vuex的mutations.js模块
    */
    
    import {
          RECEIVE_USER_INFO,
          RESET_USER_INFO
    
    } from './mutation-types'
    export default{
        //这个是方法名,action 和mutation交互的时候传的是包含这个数据的对象
    
          [RECEIVE_USER_INFO] (state, {userInfo}){
                state.userInfo = userInfo
          },
          [RESET_USER_INFO] (state){
                state.userInfo = {}
          }
    
    }

    三、总结                                                                    

    虽然现在走得很慢,但不会一直这么慢
  • 相关阅读:
    使用keytool转换签名证书格式,keyStore、jks签名证书相互转换
    Mybatis中jdbcType和javaType的对应关系
    springboot通过已有的server.key,crt,ca证书生成jks文件并开启HTTPS 并启动双向认证+动态加载信任库
    uniapp 生成Android证书及.keystore转.jks、.pem
    查看mysql数据库及表编码格式
    springboot连接mysql报错errorCode 0, state 08S01
    redis注册成windows服务步骤
    lt is detected that the motherboard VT is not enabled, and the games may lag or crash.
    Python %字符串格式化 (%操作符)
    Maven安装教程
  • 原文地址:https://www.cnblogs.com/xxm980617/p/10848886.html
Copyright © 2020-2023  润新知