ZCY Simplify VS Code Extension
一个用于简化内网站点操作的 VS Code 扩展,支持通过 cURL 命令进行认证登录。
功能特性
- 🔐 cURL 认证登录 - 通过复制浏览器的 cURL 命令快速登录内网站点
- 🍪 智能 Token 提取 - 自动从 Cookie 中提取认证 token
- 🔒 安全存储 - 使用 VS Code 安全存储保存认证信息
- 🌐 Axios 集成 - 使用熟悉的 axios API 进行 HTTP 请求
- ⚙️ 自动认证 - 请求拦截器自动附加 token
- 📊 状态栏显示 - 实时显示登录状态
- 🔧 简单易用 - 最小化配置,开箱即用
快速开始
1. 登录认证
- 在浏览器中登录你的内网站点
- 打开浏览器开发者工具 (F12)
- 在 Network 标签页中找到任意一个 API 请求
- 右键点击请求,选择 "Copy" > "Copy as cURL"
- 在 VS Code 中按
Cmd+Shift+P
(macOS) 或 Ctrl+Shift+P
(Windows/Linux)
- 输入 "ZCY Simplify: Login with cURL" 并执行
- 粘贴复制的 cURL 命令
2. 验证登录状态
- 查看状态栏右侧的登录状态指示器
- 或执行命令 "ZCY Simplify: Check Authentication Status"
3. 测试 API 连接
执行命令 "ZCY Simplify: Test API Connection" 来验证 API 是否可用。
可用命令
ZCY Simplify: Login with cURL
- 通过 cURL 命令登录
ZCY Simplify: Logout
- 登出并清除认证信息
ZCY Simplify: Check Authentication Status
- 检查当前登录状态
ZCY Simplify: Test API Connection
- 测试 API 连接
开发者使用
认证管理器 (AuthManager)
import { AuthManager } from './auth';
const authManager = new AuthManager(context);
// 检查登录状态
const isLoggedIn = await authManager.isLoggedIn();
// 获取 token
const token = await authManager.getToken();
API 客户端 (ApiClient) - 使用 Axios
import { ApiClient } from './api-client';
const apiClient = new ApiClient(authManager);
// 方式1:直接获取数据(推荐)
const users = await apiClient.getData('/api/users');
const newUser = await apiClient.postData('/api/users', { name: 'John' });
// 方式2:获取完整响应
const response = await apiClient.get('/api/users');
console.log(response.status, response.data);
// 支持所有 HTTP 方法
const getResp = await apiClient.get('/api/users');
const postResp = await apiClient.post('/api/users', userData);
const putResp = await apiClient.put('/api/users/1', updateData);
const deleteResp = await apiClient.delete('/api/users/1');
const patchResp = await apiClient.patch('/api/users/1', patchData);
// 带查询参数
const users = await apiClient.getData('/api/users', {
params: { page: 1, limit: 10 }
});
// 文件上传
const formData = new FormData();
formData.append('file', fileBlob);
const uploadResp = await apiClient.post('/api/upload', formData, {
headers: { 'Content-Type': 'multipart/form-data' }
});
// 使用原生 axios 实例(高级用法)
const axiosInstance = apiClient.getAxiosInstance();
const customResp = await axiosInstance({
method: 'POST',
url: '/api/custom',
timeout: 5000
});
工作原理
- 专业 cURL 解析: 使用
curlconverter
库进行高精度解析,备用正则表达式方案
- 智能 Token 提取: 从 Cookie 中智能识别常见的 token 字段 (token, auth, session, access_token, jwt)
- 安全存储: 使用 VS Code 的 SecretStorage API 加密存储认证信息
- Axios 集成: 使用熟悉的 axios API,支持请求/响应拦截器
- 自动认证: 请求拦截器自动附加 Cookie 或 Authorization 头
- 状态管理: 实时更新登录状态和状态栏显示
支持的 Token 格式
Cookie: token=abc123
- 提取 abc123
Cookie: auth=xyz789
- 提取 xyz789
Cookie: session=def456
- 提取 def456
Cookie: access_token=ghi789
- 提取 ghi789
Cookie: jwt=jkl012
- 提取 jkl012
Cookie: multiple=value1; token=value2
- 提取 value2
如果没有找到特定的 token 字段,将使用整个 Cookie 字符串作为 token。
配置选项
目前扩展使用最小化配置原则,大部分设置会自动从 cURL 命令中提取。
故障排除
登录失败
- 确保 cURL 命令包含 Cookie 信息
- 检查 cURL 命令格式是否正确
- 确认浏览器中的登录状态有效
API 请求失败
- 检查网络连接
- 验证登录状态是否有效
- 确认 API 端点 URL 正确
Token 过期
- 重新在浏览器中登录
- 获取新的 cURL 命令
- 重新执行登录流程
安全说明
- 认证信息使用 VS Code 安全存储,不会保存在明文文件中
- Token 仅在本地存储,不会发送到第三方服务器
- 建议定期更新认证信息以确保安全
版本历史
0.0.1
- 初始版本
- 基于 cURL 的认证系统
- 智能 token 提取
- API 客户端封装
- 状态栏集成
贡献
欢迎提交 Issue 和 Pull Request!
许可证
MIT License
Enjoy!