From eb94aae8010e2be472e74764f6438586b38da89c Mon Sep 17 00:00:00 2001 From: qier222 Date: Sat, 25 Sep 2021 14:27:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=89=AB=E7=A0=81=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/auth.js | 61 +++++++++++++++++--------------------- src/utils/request.js | 6 ++-- src/views/loginAccount.vue | 2 +- 3 files changed, 32 insertions(+), 37 deletions(-) diff --git a/src/utils/auth.js b/src/utils/auth.js index 2bc2fed..6c43863 100644 --- a/src/utils/auth.js +++ b/src/utils/auth.js @@ -2,27 +2,33 @@ import Cookies from 'js-cookie'; import { logout } from '@/api/auth'; import store from '@/store'; -export function doLogout() { - logout(); - // 网易云的接口会自动移除该 cookies - Cookies.remove('MUSIC_U'); - // 更新状态仓库中的用户信息 - store.commit('updateData', { key: 'user', value: {} }); - // 更新状态仓库中的登录状态 - store.commit('updateData', { key: 'loginMode', value: null }); - // 更新状态仓库中的喜欢列表 - store.commit('updateData', { key: 'likedSongPlaylistID', value: undefined }); +export function setCookies(string) { + const cookies = string.split(';;'); + cookies.map(cookie => { + document.cookie = cookie; + const cookieKeyValue = cookie.split(';')[0].split('='); + localStorage.setItem(`cookie-${cookieKeyValue[0]}`, cookieKeyValue[1]); + }); +} + +export function getCookie(key) { + return Cookies.get(key) ?? localStorage.getItem(`cookie-${key}`); +} + +export function removeCookie(key) { + Cookies.remove(key); + localStorage.removeItem(`cookie-${key}`); } // MUSIC_U 只有在账户登录的情况下才有 export function isLoggedIn() { - return Cookies.get('MUSIC_U') !== undefined ? true : false; + return getCookie('MUSIC_U') !== undefined; } // 账号登录 export function isAccountLoggedIn() { return ( - Cookies.get('MUSIC_U') !== undefined && + getCookie('MUSIC_U') !== undefined && store.state.data.loginMode === 'account' ); } @@ -37,25 +43,14 @@ export function isLooseLoggedIn() { return isAccountLoggedIn() || isUsernameLoggedIn(); } -export function getMusicU(string) { - const temp = string.split(';'); - if (!temp.length) { - return undefined; - } - const MUSIC_U = temp.find(item => item.includes('MUSIC_U')); - if (MUSIC_U) { - return MUSIC_U.split('=')[1]; - } - return ''; -} - -export function setMusicU(key, value) { - return Cookies.set(key, value); -} - -export function setCookies(string) { - const cookies = string.split(';;'); - cookies.map(cookie => { - document.cookie = cookie; - }); +export function doLogout() { + logout(); + removeCookie('MUSIC_U'); + removeCookie('__csrf'); + // 更新状态仓库中的用户信息 + store.commit('updateData', { key: 'user', value: {} }); + // 更新状态仓库中的登录状态 + store.commit('updateData', { key: 'loginMode', value: null }); + // 更新状态仓库中的喜欢列表 + store.commit('updateData', { key: 'likedSongPlaylistID', value: undefined }); } diff --git a/src/utils/request.js b/src/utils/request.js index 693d62f..6eae75c 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -1,5 +1,5 @@ import axios from 'axios'; -import Cookies from 'js-cookie'; +import { getCookie } from '@/utils/auth'; let baseURL = ''; // Web 和 Electron 跑在不同端口避免同时启动时冲突 @@ -22,10 +22,10 @@ const service = axios.create({ service.interceptors.request.use(function (config) { if (!config.params) config.params = {}; if (baseURL[0] !== '/' && !process.env.IS_ELECTRON) { - config.params.cookie = `MUSIC_U=${Cookies.get('MUSIC_U')};`; + config.params.cookie = `MUSIC_U=${getCookie('MUSIC_U')};`; } - if (!process.env.IS_ELECTRON) { + if (!process.env.IS_ELECTRON && !config.url.includes('/login')) { config.params.realIP = '211.161.244.70'; } diff --git a/src/views/loginAccount.vue b/src/views/loginAccount.vue index 4d8cd2d..0bc7291 100644 --- a/src/views/loginAccount.vue +++ b/src/views/loginAccount.vue @@ -271,7 +271,7 @@ export default { clearInterval(this.qrCodeCheckInterval); this.qrCodeInformation = '登录成功,请稍等...'; result.code = 200; - result.cookie = result.cookie.replace('HTTPOnly;', ''); + result.cookie = result.cookie.replace('HTTPOnly', ''); this.handleLoginResponse(result); } });