fix: 登录对接

This commit is contained in:
kaizheng(郑凯) 2025-02-25 22:55:31 +08:00
parent 6470ca86db
commit 3d0aebb025
5 changed files with 69 additions and 53 deletions

View File

@ -5,6 +5,7 @@
"scripts": { "scripts": {
"serve": "vue-cli-service serve", "serve": "vue-cli-service serve",
"build": "vue-cli-service build && sh ./build/deploy.sh", "build": "vue-cli-service build && sh ./build/deploy.sh",
"build:pro": "vue-cli-service build && sh ./build/deploy_prod.sh",
"lint": "vue-cli-service lint" "lint": "vue-cli-service lint"
}, },
"dependencies": { "dependencies": {

View File

@ -1,6 +1,5 @@
window.config = { window.config = {
wxAuthUrl: "", loginUrl: "https://web.ceniu.sztg.com/#/login",
webAuthUrl: "",
VConsole: true, VConsole: true,
userIdList: [], userIdList: [],
shareEnv: "production", shareEnv: "production",

View File

@ -1,5 +1,6 @@
import { createRouter, createWebHistory } from "vue-router"; import { createRouter, createWebHistory } from "vue-router";
import store from "@/store"; import store from "@/store";
import { userLogin } from "@/utils/login";
const routes = [ const routes = [
{ {
@ -126,16 +127,16 @@ const routes = [
component: () => component: () =>
import(/* webpackChunkName: "about" */ "../views/CourseDetail/page.vue"), import(/* webpackChunkName: "about" */ "../views/CourseDetail/page.vue"),
}, },
{ // {
path: "/login", // path: "/login",
name: "login", // name: "login",
component: () => // component: () =>
import(/* webpackChunkName: "about" */ "../views/Login/index.vue"), // import(/* webpackChunkName: "about" */ "../views/Login/index.vue"),
meta: { // meta: {
title: "登录", // title: "登录",
noLogin: true, // 不需要登录 // noLogin: true, // 不需要登录
}, // },
}, // },
{ {
path: "/shotVideoPlay", path: "/shotVideoPlay",
name: "shotVideoPlay", name: "shotVideoPlay",
@ -184,33 +185,33 @@ const router = createRouter({
}); });
router.beforeEach(async (to, from, next) => { router.beforeEach(async (to, from, next) => {
if ( if (to.meta.noLogin || (to.path === "/page" && to.query.preview)) {
(to.path !== "/login" && to.meta.noLogin) ||
(to.path === "/page" && to.query.preview)
) {
return next(); return next();
} }
if (!store.state.token && !to.meta.noLogin) { if (to.query.refreshToken) {
if (to.query.refreshToken) { location.replace(
location.replace( `${to.query.redirect}${
`${to.query.redirect}${ to.query.redirect.includes("?") ? "&" : "?"
to.query.redirect.includes("?") ? "&" : "?" }redirectToken=${to.query.token}&redirectRefreshToken=${
}token=${to.query.token}&refreshToken=${to.query.refreshToken}` to.query.refreshToken
); }`
);
} else if (to.query.redirectRefreshToken) {
let ret = await store.dispatch("Login", {
token: to.query.redirectToken,
refreshToken: to.query.redirectRefreshToken,
});
if (ret && ret.code === 0) {
delete to.query.redirectToken;
delete to.query.redirectRefreshToken;
return next({ path: to.path, query: to.query, replace: true });
} else { } else {
next({ userLogin();
path: "/login",
query: {
redirect: to.fullPath,
},
});
} }
} else if (!store.state.token && !to.meta.noLogin) {
userLogin();
} else { } else {
if (to.path === "/login" && store.state.token) { next();
next("/");
} else {
next();
}
} }
}); });

View File

@ -2,6 +2,7 @@ import { createStore } from "vuex";
import router from "@/router/index"; import router from "@/router/index";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { terminalType } from "@/utils/index"; import { terminalType } from "@/utils/index";
import { getUserInfo } from "@/api/index";
console.log("process.env.NODE_ENV", process.env.NODE_ENV); console.log("process.env.NODE_ENV", process.env.NODE_ENV);
export default createStore({ export default createStore({
@ -366,6 +367,33 @@ export default createStore({
state.forbidLogin = true; state.forbidLogin = true;
}, },
}, },
actions: {}, actions: {
// 登录
Login({ commit }, { token, refreshToken }) {
return new Promise((resolve, reject) => {
getUserInfo({
token,
refreshToken,
loginType: 2, // 1账号密码登录 2token登录
clientType: 1,
})
.then((ret) => {
if (ret.code === 0) {
commit("setToken", ret.data.upToken);
commit(
"setUserInfo",
Object.assign({ account: ret.data.userId }, ret.data)
);
resolve(ret);
} else {
reject();
}
})
.catch(() => {
reject();
});
});
},
},
modules: {}, modules: {},
}); });

View File

@ -1,7 +1,7 @@
import store from "../store"; import store from "../store";
// import { getUserInfo } from "@/api/index"; // import { getUserInfo } from "@/api/index";
import { terminalType } from "@/utils/index"; import { terminalType } from "@/utils/index";
import router from "@/router/index"; // import router from "@/router/index";
export async function userLogin() { export async function userLogin() {
localStorage.removeItem("token"); localStorage.removeItem("token");
@ -12,21 +12,8 @@ export async function userLogin() {
const ua = navigator.userAgent.toLowerCase(); const ua = navigator.userAgent.toLowerCase();
const isWeixin = ua.indexOf("micromessenger") !== -1; const isWeixin = ua.indexOf("micromessenger") !== -1;
console.log(isWeixin, terminalType); console.log(isWeixin, terminalType);
debugger; // console.log("router", router);
console.log("router", router); location.href = `${window.config.loginUrl}?needWx=${
if (isWeixin) { isWeixin ? true : false
router.push({ }&redirect=${encodeURIComponent(location.href)}`;
path: "/login",
query: {
redirect: router.currentRoute.value.fullPath,
},
});
} else {
router.push({
path: "/login",
query: {
redirect: router.currentRoute.value.fullPath,
},
});
}
} }