• 携带参数的退出功能


    目录

    1.常用的实现用户退出

    分析

    思路

    步骤 

    小结

    2.退出再进入能回到原来的页面 - 分析

    分析

    1.登录成功后进入指定的页面

    2.退出系统时回传当前路径


    1.常用的实现用户退出

    分析

    弹框提示用户是否确定退出

    • 如果点击确认

              1.  首先看看接口文档有没有退出接口,有的话就调用(注意并不是所有的项目,都有退出接口)

              2. 退出接口成功调用之后清空本地用户信息(token、userInfo)

              3. 如果需要携带必要参数跳回到登录页面准备重新登录操作

    • 如果点击取消 不做任何操作

    思路

    步骤 

    1.在 action里面封装一个 用来退出的代码

    1. userLogout(context){
    2. context.commit('removeUserInfo')
    3. context.commit('removeToken')
    4. }

    2.调用action 当用户点击退出时,显示确认对话框

    1. logout() {
    2. // 弹层询问,是否退出
    3. this.$confirm('你确定要离开吗?', '提示', {
    4. confirmButtonText: '确定',
    5. cancelButtonText: '取消',
    6. type: 'warning'
    7. }).then(async() => {
    8. await this.$store.dispatch('user/logout')
    9. this.$router.push(`/login`)
    10. }).catch(() => {
    11. // 用户取消退出
    12. })
    13. }

    3.补充action

    store/modules/user.js

    logout(context) {
          // 删除token
          context.commit('reomveToken')
          // 删除userInfo
          context.commit('reomveUserInfo')
        }

    查看效果 

    在vue调试工具中,检查本地用户信息,检查是否已经清空了

    小结

    退出之前要询问,confirm对话框

    退出之前要清空数据,由于这个数据是保存在vuex中的,使用action来删除

    2.退出再进入能回到原来的页面 - 分析

    分析

    从http://localhost:9528/#/a中退出之后,随后立即登录,还能再回到http://localhost:9528/#/a这里

    1. 登录成功之后,进入指定的目标页面(不要每次都进入主页)
    2. 用户退出,跳入登录页时,携带目标页面地址告诉登录页

    1.登录成功后进入指定的页面

    在访问login这个页面时,可以在地址栏中补充一个查询字符串来指定登陆成功之后要去到的页面。

    例如

    # 访问登录页,并且告诉它,登录成功之后要进入 /abc
    http://localhost:9528/#/login?return_url=/abc

    实现代码

    login/index.vue中的代码

    1. async doLogin() {
    2. try {
    3. // 在组件中调用带命名空间的action
    4. // dispatch是异步的,需要加async await
    5. await this.$store.dispatch('user/userLogin', this.loginForm)
    6. // 登录成功,路由跳转
    7. + this.$router.push(this.$route.query.return_url || '/')
    8. } catch (err) {
    9. alert('用户登录,失败')
    10. console.log('用户登录,失败', err)
    11. }
    12. },

    2.退出系统时回传当前路径

    在退出时,跳回login时,回传当前的路径

    实现代码

    1. logout() {
    2. // 弹层询问,是否退出
    3. this.$confirm('你确定要离开吗?', '提示', {
    4. confirmButtonText: '确定',
    5. cancelButtonText: '取消',
    6. type: 'warning'
    7. }).then(async() => {
    8. // 确认
    9. // 删除信息
    10. await this.$store.dispatch('user/userLogout')
    11. // 去到登录页
    12. // this.$router.push('/login?return_url=当前的路径')
    13. // 跳转路由-回登陆
    14. // 如何获取当前页面的地址 : this.$route.fullPath
    15. // this.$route.path只有路径的信息
    16. // this.$route.fullPath:路径+查询参数的信息
    17. + this.$router.push('/login?return_url=' + encodeURIComponent(this.$route.fullPath))
    18. }).catch(() => {
    19. })
    20. }
    • $route.path:只有路径的信息
    • $route.fullPath:路径+查询参数的信息
    • return_url: 这个名字是自己约定的,它要和login/index.vue中跳转代码保持一致。
    • encodeURIComponent: 是js的内置API,用来对url进行编码

     this.$router.push('/login?return_url=' + encodeURIComponent(this.$route.fullPath))

  • 相关阅读:
    基于SSM的毕业论文答辩系统
    owt-server源码剖析(六)--集群分布及任务调度
    Django思维导图-配置信息
    C++强类型枚举
    Redis 设计与实现
    Qt+openCV学习笔记(十六)Qt6.6.0rc+openCV4.8.1+emsdk3.1.37编译静态库
    设计模式--代理模式
    CSS 的布局 盒子
    管理类联考——英语二——阅读篇——题材:经济
    Vitis导入自制IP导致无法构建Platform
  • 原文地址:https://blog.csdn.net/LJM51200/article/details/125256015