通过用户中心来登录
This commit is contained in:
parent
6a6c5c53fb
commit
f1063be9ad
|
|
@ -1,4 +1,5 @@
|
||||||
import request from '@/utils/request2';
|
import request from '@/utils/user_center_request';
|
||||||
|
import request2 from '@/utils/request2';
|
||||||
import md5 from 'js-md5';
|
import md5 from 'js-md5';
|
||||||
import {UserUISettings} from '@/types/user';
|
import {UserUISettings} from '@/types/user';
|
||||||
|
|
||||||
|
|
@ -141,7 +142,7 @@ export const GetUserStatisticService = (Data) => {
|
||||||
for (let key in Data) {
|
for (let key in Data) {
|
||||||
params.append(key, Data[key])
|
params.append(key, Data[key])
|
||||||
}
|
}
|
||||||
return request.post('/user/statistic', params,{
|
return request2.post('/user/statistic', params,{
|
||||||
headers: {
|
headers: {
|
||||||
'token': Data.token,
|
'token': Data.token,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -99,3 +99,19 @@ export interface UserUISettings {
|
||||||
session_id: number; // 会话ID
|
session_id: number; // 会话ID
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// {
|
||||||
|
// "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDgwODg2MDIsImlkIjoxLCJ0eXBlIjoiYWNjZXNzIiwidXNlcm5hbWUiOiJsaWp1biJ9.HJDV_GLkHCEh77GU1tEExmq1RBVv_mYwfQAUEdIFoKw",
|
||||||
|
// "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NDg2ODk4MDIsImlkIjoxLCJ0eXBlIjoicmVmcmVzaCJ9.bDO7a7KLNmI9-EVkVmcEebRVD0-5p-Uq7sThRd-NFqA",
|
||||||
|
// "user_id": 1,
|
||||||
|
// "username": "lijun",
|
||||||
|
// "email": "lijun@ljsea.top"
|
||||||
|
// },
|
||||||
|
|
||||||
|
export interface UserToken {
|
||||||
|
access_token: string; // 访问令牌
|
||||||
|
refresh_token: string; // 刷新令牌
|
||||||
|
user_id: number; // 用户ID
|
||||||
|
username: string; // 用户名
|
||||||
|
email: string; // 用户邮箱
|
||||||
|
}
|
||||||
|
|
@ -22,11 +22,6 @@ request.interceptors.response.use(
|
||||||
router.push("/login")
|
router.push("/login")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if(result.data.code == 7){
|
|
||||||
//alert("该用户已存在,请重新输入!");
|
|
||||||
ElMessage.error('该用户已存在,请重新输入!');
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
if(result.data.code == 1){
|
if(result.data.code == 1){
|
||||||
//alert("请求失败,请稍后重试!");
|
//alert("请求失败,请稍后重试!");
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
// request.ts
|
||||||
|
import { ElMessage } from 'element-plus'
|
||||||
|
import router from '@/router/index.js'
|
||||||
|
|
||||||
|
const baseURL = "https://uc.ljsea.top/"
|
||||||
|
|
||||||
|
// 统一错误处理
|
||||||
|
const errorHandler = (msg: string = '请求失败,请稍后重试!') => {
|
||||||
|
ElMessage.error(msg)
|
||||||
|
return Promise.reject(new Error(msg))
|
||||||
|
}
|
||||||
|
|
||||||
|
// 核心请求方法
|
||||||
|
const fetchRequest = async (url: string, config?: RequestInit) => {
|
||||||
|
try {
|
||||||
|
const fullUrl = new URL(url, baseURL).toString()
|
||||||
|
const response = await fetch(fullUrl, {
|
||||||
|
...config,
|
||||||
|
//credentials: 'include', // 携带 Cookie
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
...config?.headers,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
// HTTP 状态码处理
|
||||||
|
if (!response.ok) {
|
||||||
|
router.push("/login")
|
||||||
|
return errorHandler(`HTTP 错误 ${response.status}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 业务数据处理
|
||||||
|
const result = await response.json()
|
||||||
|
|
||||||
|
if (result.message === "NOT_LOGIN" || [2, 3, 4].includes(result.code)) {
|
||||||
|
ElMessage.error('登录失效,请重新登录!')
|
||||||
|
localStorage.removeItem("token")
|
||||||
|
router.push("/login")
|
||||||
|
return Promise.reject(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result.code === 1) {
|
||||||
|
return errorHandler(result.message || '请求失败,请稍后重试!')
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.data || result
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
return errorHandler(error instanceof Error ? error.message : '网络连接异常')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 封装不同请求方法
|
||||||
|
export default {
|
||||||
|
get: (url: string, config?: RequestInit) =>
|
||||||
|
fetchRequest(url, { ...config, method: 'GET' }),
|
||||||
|
|
||||||
|
post: (url: string, data?: any, config?: RequestInit) =>
|
||||||
|
fetchRequest(url, {
|
||||||
|
...config,
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify(data),
|
||||||
|
}),
|
||||||
|
|
||||||
|
put: (url: string, data?: any, config?: RequestInit) =>
|
||||||
|
fetchRequest(url, {
|
||||||
|
...config,
|
||||||
|
method: 'PUT',
|
||||||
|
body: JSON.stringify(data),
|
||||||
|
}),
|
||||||
|
|
||||||
|
delete: (url: string, config?: RequestInit) =>
|
||||||
|
fetchRequest(url, { ...config, method: 'DELETE' }),
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
import axios from "axios";
|
||||||
|
import router from "@/router/index.js";
|
||||||
|
import Cookies from 'js-cookie';
|
||||||
|
import { ElMessage } from 'element-plus';
|
||||||
|
//const baseURL = "https://gep.ljsea.top/";
|
||||||
|
const baseURL = "https://uc.ljsea.top/";
|
||||||
|
//const baseURL= "http://localhost:8084";
|
||||||
|
//const baseURL="https://pm.ljsea.top";
|
||||||
|
//const baseURL = "https://gep.ljsea.xyz/";
|
||||||
|
const request = axios.create({
|
||||||
|
baseURL: baseURL,
|
||||||
|
});
|
||||||
|
|
||||||
|
request.interceptors.response.use(
|
||||||
|
result => {
|
||||||
|
const cookie= Cookies.get("user_token");
|
||||||
|
console.log("cookie:", cookie);
|
||||||
|
|
||||||
|
//请求地址
|
||||||
|
if(result.config.url == "/user/refresh_token"){
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(result.data.message==="NOT_LOGIN"|| [2, 3, 4].includes(result.data.code) || result.status !== 200 ){
|
||||||
|
//alert("登录失效,请重新登录!")
|
||||||
|
refreshToken();
|
||||||
|
//重新请求
|
||||||
|
//return request(result.config);
|
||||||
|
}
|
||||||
|
if(result.data.code == 7){
|
||||||
|
//alert("该用户已存在,请重新输入!");
|
||||||
|
ElMessage.error('该用户已存在,请重新输入!');
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
if(result.data.code == 1){
|
||||||
|
//alert("请求失败,请稍后重试!");
|
||||||
|
ElMessage.error('请求失败,请稍后重试!');
|
||||||
|
}else{
|
||||||
|
return result.data
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
//alert("请求失败,请稍后重试!");
|
||||||
|
ElMessage.error('请求失败,请稍后重试!');
|
||||||
|
return Promise.reject(error);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
const refreshToken = async () => {
|
||||||
|
//读取cookie的信息
|
||||||
|
const user_token = Cookies.get("user_token");
|
||||||
|
if(user_token == null){
|
||||||
|
router.push("/login");
|
||||||
|
}
|
||||||
|
let userTokenInfo = JSON.parse(user_token);
|
||||||
|
let req_data = await request.post('/user/refresh_token', {
|
||||||
|
"refresh_token": userTokenInfo.refresh_token
|
||||||
|
}, {
|
||||||
|
headers: {
|
||||||
|
'token': userTokenInfo.token,
|
||||||
|
'Content-Type': 'application/json' // 设置请求头为 JSON 格式
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if(req_data.status == 401 || req_data.status == 403){
|
||||||
|
//alert("登录失效,请重新登录!");
|
||||||
|
ElMessage.error('登录失效,请重新登录!');
|
||||||
|
localStorage.removeItem("token");
|
||||||
|
router.push("/login")
|
||||||
|
}else{
|
||||||
|
let newAccessToken = req_data.data;
|
||||||
|
localStorage.setItem("token", newAccessToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default request;
|
||||||
|
|
@ -79,7 +79,9 @@ import { useRouter } from "vue-router";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import { loginService } from "@/api/user";
|
import { loginService } from "@/api/user";
|
||||||
import { GetUserInfoService } from "@/api/user";
|
import { GetUserInfoService } from "@/api/user";
|
||||||
|
import { UserToken } from "@/types/user";
|
||||||
import { usePermissStore } from "@/store/permiss";
|
import { usePermissStore } from "@/store/permiss";
|
||||||
|
import Cookies from 'js-cookie';
|
||||||
import {getThirdPartyUUID,getThirdPartyLoginStatus,getGithubLoginUrl,getQQLoginUrl,getThirdPartyLoginUrl} from "@/api/user";
|
import {getThirdPartyUUID,getThirdPartyLoginStatus,getGithubLoginUrl,getQQLoginUrl,getThirdPartyLoginUrl} from "@/api/user";
|
||||||
// 从本地存储获取登录参数
|
// 从本地存储获取登录参数
|
||||||
const lgStr = localStorage.getItem("login-param");
|
const lgStr = localStorage.getItem("login-param");
|
||||||
|
|
@ -236,20 +238,15 @@ const thirdLogin = async (type) => {
|
||||||
if(status["status"] === 0) {
|
if(status["status"] === 0) {
|
||||||
//登录成功
|
//登录成功
|
||||||
clearInterval(timer);
|
clearInterval(timer);
|
||||||
let userInfo = status["user_info"];
|
let userInfo:UserToken = status["user_info"];
|
||||||
let token = userInfo["token"];
|
globalData["token"] = userInfo.access_token;
|
||||||
if (!token) {
|
localStorage.setItem("token", userInfo.access_token);
|
||||||
ElMessage.error("获取登录状态失败!请稍后再试");
|
localStorage.setItem("refresh_token", userInfo.refresh_token);
|
||||||
return;
|
localStorage.setItem("userId", userInfo.user_id.toString());
|
||||||
}
|
localStorage.setItem("username", userInfo.username);
|
||||||
|
|
||||||
globalData["token"] = token;
|
|
||||||
localStorage.setItem("token", token);
|
|
||||||
localStorage.setItem("userId", userInfo["id"]);
|
|
||||||
localStorage.setItem("username", status["username"]);
|
|
||||||
let now = new Date();
|
let now = new Date();
|
||||||
localStorage.setItem("end_time", (now.setDate(now.getHours() + 12)).toString()); //过期时间
|
localStorage.setItem("end_time", (now.setDate(now.getHours() + 12)).toString()); //过期时间
|
||||||
await getMyUserInfo(userInfo["id"]);
|
await getMyUserInfo(userInfo.user_id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}, 2000);
|
}, 2000);
|
||||||
|
|
@ -282,13 +279,15 @@ const onLogin = async () => {
|
||||||
ElMessage.error("登录失败!用户名或密码错误");
|
ElMessage.error("登录失败!用户名或密码错误");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
let userTokenInfo: UserToken = result["data"];
|
||||||
globalData["token"] = result.data;
|
globalData["token"] = result.data;
|
||||||
localStorage.setItem("token", result.data.token);
|
localStorage.setItem("token", userTokenInfo.access_token);
|
||||||
localStorage.setItem("userId", result.data.id);
|
localStorage.setItem("refresh_token", userTokenInfo.refresh_token);
|
||||||
localStorage.setItem("username", result.data.username);
|
localStorage.setItem("userId", userTokenInfo.user_id.toString());
|
||||||
|
localStorage.setItem("username", userTokenInfo.username);
|
||||||
let now = new Date();
|
let now = new Date();
|
||||||
localStorage.setItem("end_time", (now.setDate(now.getHours() + 12)).toString()); //过期时间
|
localStorage.setItem("end_time", (now.setDate(now.getHours())).toString()); //过期时间
|
||||||
await getMyUserInfo(result.data.id);
|
await getMyUserInfo(userTokenInfo.user_id);
|
||||||
//token.value= result.data;
|
//token.value= result.data;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
@ -301,12 +300,15 @@ const getMyUserInfo = async (id) => {
|
||||||
id: id,
|
id: id,
|
||||||
};
|
};
|
||||||
result = await GetUserInfoService(tokenData);
|
result = await GetUserInfoService(tokenData);
|
||||||
|
const cookie= Cookies.get("user_token");
|
||||||
|
console.log("cookie:", cookie);
|
||||||
if (result["code"] === 0) {
|
if (result["code"] === 0) {
|
||||||
//console.log("token data:",this.tokenData)
|
//console.log("token data:",this.tokenData)
|
||||||
// localStorage.setItem("video_func", result.data.VideoFunc);
|
// localStorage.setItem("video_func", result.data.VideoFunc);
|
||||||
// localStorage.setItem("device_func", result.data.DeviceFunc);
|
// localStorage.setItem("device_func", result.data.DeviceFunc);
|
||||||
// localStorage.setItem("cid_func", result.data.CIDFunc);
|
// localStorage.setItem("cid_func", result.data.CIDFunc);
|
||||||
// localStorage.setItem("role", result.data.Role);
|
// localStorage.setItem("role", result.data.Role);
|
||||||
|
|
||||||
|
|
||||||
ElMessage.success("登录成功");
|
ElMessage.success("登录成功");
|
||||||
localStorage.setItem("ms_username", result["data"]["Name"]);
|
localStorage.setItem("ms_username", result["data"]["Name"]);
|
||||||
|
|
|
||||||
|
|
@ -64,6 +64,7 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive,inject } from 'vue';
|
import { ref, reactive,inject } from 'vue';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
|
import { UserToken } from "@/types/user";
|
||||||
import { ElMessage } from 'element-plus';
|
import { ElMessage } from 'element-plus';
|
||||||
import { registerService,getRigisterEmailCode } from "@/api/user";
|
import { registerService,getRigisterEmailCode } from "@/api/user";
|
||||||
import {GetUserInfoService} from "@/api/user";
|
import {GetUserInfoService} from "@/api/user";
|
||||||
|
|
@ -156,10 +157,12 @@ const onRegister = async () => {
|
||||||
|
|
||||||
let result = await registerService(registerData);
|
let result = await registerService(registerData);
|
||||||
if (result !== null) {
|
if (result !== null) {
|
||||||
|
let userTokenInfo: UserToken = result["data"];
|
||||||
globalData["token"] = result.data;
|
globalData["token"] = result.data;
|
||||||
localStorage.setItem("token", result.data.token);
|
localStorage.setItem("token", userTokenInfo.access_token);
|
||||||
localStorage.setItem("userId", result.data.id);
|
localStorage.setItem("refresh_token", userTokenInfo.refresh_token);
|
||||||
localStorage.setItem("username", result.data.username);
|
localStorage.setItem("userId", userTokenInfo.user_id.toString());
|
||||||
|
localStorage.setItem("username", userTokenInfo.username);
|
||||||
let now = new Date();
|
let now = new Date();
|
||||||
localStorage.setItem("end_time", (now.setDate(now.getHours() + 12)).toString()); //过期时间
|
localStorage.setItem("end_time", (now.setDate(now.getHours() + 12)).toString()); //过期时间
|
||||||
//token.value= result.data;
|
//token.value= result.data;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue