mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-10-02 17:06:36 +08:00
105 lines
2.4 KiB
JavaScript
105 lines
2.4 KiB
JavaScript
/**
|
|
* JWT工具类 - 前端版本
|
|
*/
|
|
|
|
/**
|
|
* 从JWT Token中获取payload
|
|
* @param {string} token JWT Token
|
|
* @returns {object|null} payload数据
|
|
*/
|
|
function getPayloadFromToken(token) {
|
|
try {
|
|
if (!token) return null;
|
|
|
|
const parts = token.split('.');
|
|
if (parts.length !== 3) return null;
|
|
|
|
const encodedPayload = parts[1];
|
|
const decodedPayload = atob(encodedPayload);
|
|
return JSON.parse(decodedPayload);
|
|
} catch (error) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 从JWT Token中获取用户ID
|
|
* @param {string} token JWT Token
|
|
* @returns {number|null} 用户ID
|
|
*/
|
|
export function getUserIdFromToken(token) {
|
|
const payload = getPayloadFromToken(token);
|
|
return payload ? parseInt(payload.sub) : null;
|
|
}
|
|
|
|
/**
|
|
* 从JWT Token中获取用户角色ID
|
|
* @param {string} token JWT Token
|
|
* @returns {number|null} 角色ID
|
|
*/
|
|
export function getRoleIdFromToken(token) {
|
|
const payload = getPayloadFromToken(token);
|
|
return payload ? payload.role_id : null;
|
|
}
|
|
|
|
/**
|
|
* 从JWT Token中获取用户名
|
|
* @param {string} token JWT Token
|
|
* @returns {string|null} 用户名
|
|
*/
|
|
export function getUsernameFromToken(token) {
|
|
const payload = getPayloadFromToken(token);
|
|
return payload ? payload.user : null;
|
|
}
|
|
|
|
/**
|
|
* 验证token是否过期
|
|
* @param {string} token JWT Token
|
|
* @returns {boolean} 是否有效
|
|
*/
|
|
export function isTokenValid(token) {
|
|
const payload = getPayloadFromToken(token);
|
|
if (!payload) return false;
|
|
|
|
const now = Math.floor(Date.now() / 1000);
|
|
return payload.exp > now;
|
|
}
|
|
|
|
// JwtUtil对象,提供便捷的静态方法调用
|
|
export const JwtUtil = {
|
|
/**
|
|
* 从localStorage获取token并解析用户ID
|
|
* @returns {number|null} 用户ID
|
|
*/
|
|
getUserIdFromToken() {
|
|
const token = localStorage.getItem('token');
|
|
return getUserIdFromToken(token);
|
|
},
|
|
|
|
/**
|
|
* 从localStorage获取token并解析角色ID
|
|
* @returns {number|null} 角色ID
|
|
*/
|
|
getRoleIdFromToken() {
|
|
const token = localStorage.getItem('token');
|
|
return getRoleIdFromToken(token);
|
|
},
|
|
|
|
/**
|
|
* 从localStorage获取token并解析用户名
|
|
* @returns {string|null} 用户名
|
|
*/
|
|
getUsernameFromToken() {
|
|
const token = localStorage.getItem('token');
|
|
return getUsernameFromToken(token);
|
|
},
|
|
|
|
/**
|
|
* 验证localStorage中的token是否有效
|
|
* @returns {boolean} 是否有效
|
|
*/
|
|
isTokenValid() {
|
|
const token = localStorage.getItem('token');
|
|
return isTokenValid(token);
|
|
}
|
|
};
|