# 登录与授权 Q&A：一次登录，多项目复用

> 本文补充说明 `apc login` 的行为：全局配置 vs 局部 `.env`，多项目复用、优先级和团队协作时的推荐用法。

## 1. `apc login` 写全局好，还是只写当前项目好？

**问：`apc login` 默认把登录信息写到哪？我该怎么选？**

**答：默认写「全局配置」，也可以选择只写当前项目的 `.env`。推荐做法是：**

- **个人开发 / 多项目场景：优先用全局配置**

  - 直接执行：

    ```bash
    apc login
    ```

  - 登录信息会写到全局配置文件中，一次登录，可以在多份 ArenaPro Vite 项目里复用。

- **对当前项目有额外要求的项目：可以只写当前项目的 `.env`**

  - 使用 `--env` 参数：

    ```bash
    apc login --env        # 仅写入当前项目 .env
    apc login --env dev    # 仅写入当前项目 .env.dev
    ```

  - 这种方式不会改动全局配置，只影响当前工程。

## 2. 在 A 项目登录过，B 项目还要再登录吗？

**问：我在 A 项目里执行过一次 `apc login`，换到 B 项目后还需要再登录一次吗？**

**答：默认不需要。**

- 当你只执行过：

  ```bash
  apc login
  ```

- 登录信息已经写进了全局配置：
  - 换到 B 项目时，`apc resource` / `apc list` / `apc set` 等命令会**先看本地 `.env`，如果没有，再回退用全局登录信息**；
  - 只要 Token / UA 还有效，就可以直接使用，无需重复登录。

> 换句话说：**一次全局登录，可以服务多个项目**。

## 3. 本地 `.env` 和全局登录冲突时，用哪一个？

**问：如果我既有全局登录，又在项目 `.env` 里手动（或通过 `apc login --env`）写了 Token / UA，到底用哪一个？**

**答：优先级是「局部优先，全局兜底」。**

CLI 在读取登录信息时的大致顺序是：

1. **当前项目的 `.env[.mode]`** 中的 `VITE_DAO3_AUTH` / `VITE_DAO3_UA`；
2. 如果本地 `.env` 系列都没有配置，再回退使用**全局配置**中的 Token / UA。

这意味着：

- 你可以在某个项目里，用 `apc login --env` 写入一套与全局不同的账号 / 权限；
- 在这个项目中，所有需要登录态的操作都会优先使用这套「局部账号」。

## 4. 团队协作时，推荐哪种登录方式？

**问：团队多人协作时，大家应该怎么登录比较省心？**

**建议：**

- **每个开发者单独执行一次全局登录：**

  ```bash
  apc login
  ```

  - 各自用自己的账号授权，后续无论参与几个项目，都能直接复用这次登录态；
  - 不需要在仓库里提交任何和个人 Token 相关的内容。

- 对某些需要「专门测试账号」或「临时权限」的项目，可以在该项目中再执行一次：

  ```bash
  apc login --env
  ```

  这样只影响当前项目，不会改动其他项目的登录状态。

## 5. 我需要把 Token / UA 写进 `.env.example` 吗？

**问：`.env.example` 里要不要包含 `VITE_DAO3_AUTH` 和 `VITE_DAO3_UA`？**

**答：不要写真实值，可以只保留字段名当「提示」。**

常见做法是：

```env
# 账号相关（示例字段名，不要提交真实值）
VITE_DAO3_AUTH=YOUR_TOKEN_HERE
VITE_DAO3_UA=YOUR_UA_HERE
```

然后在团队文档里说明：

- 新同学拉仓库后，可以：
  - 直接执行 `apc login`，让 CLI 帮你写入全局配置（推荐）；
  - 或者在当前项目中执行 `apc login --env`，让 CLI 自动写入 `.env`；
- 无论哪种方式，都**不需要**把真实 Token 写进 `.env.example` 并提交。
