<script>
import { ref } from 'vue';
import axios from 'axios';

export default {
  name: '/logout',
  setup() {
    const squareUrl = ref('');

    const logOut = () => {
      confirmLogout()
        .then(() => {
          clearToken();
          clearTAR();
          refreshPage();
        })
        .catch(() => {
          // 取消退出操作
        });
    };

    const confirmLogout = () => {
      return new Promise((resolve, reject) => {
        if (confirm('确定退出吗?')) {
          resolve();
        } else {
          reject();
        }
      });
    };

    const clearToken = () => {
      const token = localStorage.getItem('token');
      axios
        .post('http://nn.nncoding.icu:8080/api/logout', {}, {
          headers: {
            token: token
          }
        })
        .then((result) => {
          console.log(result);
        })
        .catch((error) => {
          console.log(error);
        });
    };

    const clearTAR = () => {
      localStorage.removeItem('token');
      localStorage.removeItem('roles');
    };

    const refreshPage = () => {
      location.reload();
    };

    const getUserInfo = async () => {
      const token = localStorage.getItem('token');

      try {
        const response = await axios.get('http://nn.nncoding.icu:8080/api/user/info', {
          headers: {
            token: token
          }
        });
        let str = response.data.data.headUrl;
        // 使用正则表达式提取URL
        let url = str.match(/(http[s]?:\/\/[^\s]+)/g);
        squareUrl.value = url[0];
      } catch (error) {
        console.error(error);
      }
    };

    return {
      squareUrl,
      logOut,
      getUserInfo
    };
  },
  mounted() {
    this.getUserInfo();
  }
};
</script
script 头像import axios from axios;export default name logout methods logOut this$confirm确定退出吗 提示 confirmButtonText 确定 cancelButtonText 取消 type warning then =

原文地址: https://www.cveoy.top/t/topic/iagh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录