blob: 272d8b7e96057a9020b77eed3a42e8b3fdaf46a3 [file] [log] [blame] [edit]
import Mock from 'mockjs';
import MockAdapter from 'axios-mock-adapter';
import {postUserLogin, getRefreshToken} from '@/api/auth'; // Import the API endpoint
function generateToken(userId, role) {
const exp = Math.floor(Date.now() / 1000) + 60 * 60;
// 生成 JWT Header
const header = {
alg: 'HS256', // 签名算法
typ: 'JWT', // 类型
};
// 生成 JWT Payload
const payload = {
userId,
role,
exp,
};
// Base64 编码 Header 和 Payload
const base64Header = btoa(JSON.stringify(header));
const base64Payload = btoa(JSON.stringify(payload));
// 模拟 Signature(实际应使用密钥进行 HMAC-SHA256 签名)
const signature = btoa('mock-signature'); // 简单模拟签名
// 拼接 JWT Token
const token = `${base64Header}.${base64Payload}.${signature}`;
return token;
}
/**
* 设置用户相关的 Mock 接口
* @param {MockAdapter} mock
*/
export function setupAuthMock(mock) {
mock.onPost(postUserLogin).reply(config => {
const data = JSON.parse(config.data);
if(data.email === 'admin@1' && data.password === '123456'){
// 模拟用户登录数据
const token = generateToken(1, 'admin');
// 返回模拟的 Token
let data = Mock.mock({
token,
});
return [200, data];
}else{
return [401, {message: '用户名或密码错误'}];
}
});
mock.onGet(getRefreshToken).reply(config => {
// 模拟用户登录数据
const token = generateToken(1, 'admin'); // 这里的 1 和 'admin' 可以根据需要修改
// 返回模拟的 Token
let data = Mock.mock({
token,
});
return [200, data];
})
}