> ## Documentation Index
> Fetch the complete documentation index at: https://docs.befailproof.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Đăng nhập

> Đăng nhập vào FailproofAI từ CLI để bật các lời nhắc và tính năng cá nhân hóa

```bash theme={null}
failproofai auth login    # email + one-time code
failproofai auth logout   # revoke this session
failproofai auth whoami   # print the signed-in identity
```

Dạng cờ legacy `--login` / `--logout` / `--whoami` vẫn được chấp nhận như một bí danh để tương thích ngược.

Xác thực là tùy chọn. Policies, dashboard, trang `/audit`, và mọi tính năng cục bộ khác hoạt động giống nhau dù bạn đã đăng nhập hay chưa. Giao diện đăng nhập tồn tại để các tính năng **cần** một danh tính ổn định (những lời nhắc kiểm toán lại ngay hôm nay, nhiều hơn trong tương lai) có chỗ để neo.

## Luồng đăng nhập

```bash theme={null}
failproofai auth login
```

Yêu cầu email của bạn, gửi mã một lần 6 chữ số đến địa chỉ đó, yêu cầu mã, và khi thành công sẽ ghi `~/.failproofai/auth.json` (chế độ `0600`). Phiên làm việc tương tự sau đó sẽ hiển thị trên dashboard trong ứng dụng — nhấp vào `[ set a reminder ]` trên `/audit` sẽ thấy bạn đã đăng nhập.

Dashboard hiển thị cùng luồng dưới dạng hộp thoại phương thức trên `/audit` cho những người dùng không bao giờ sử dụng CLI.

## Đăng xuất

```bash theme={null}
failproofai auth logout
```

Thu hồi phiên làm việc hiện tại trên máy chủ và xóa `~/.failproofai/auth.json`. Nếu máy chủ API không thể truy cập được, tệp cục bộ sẽ bị xóa dù sao — ý định cục bộ để đăng xuất luôn thắng.

## Kiểm tra danh tính

```bash theme={null}
failproofai auth whoami
```

In ra `<email> (<user uuid>)` và thoát với mã 0 khi tồn tại phiên làm việc hợp lệ, hoặc in ra `not signed in` và thoát với mã 1 nếu không. Im lặng làm mới token truy cập ở nền tảng nếu nó cách hết hạn dưới một phút.

## Lời nhắc kiểm toán lại liên tục

Khi bạn nhấp vào **`[ set a reminder ]`** trên trang `/audit` (hoặc đăng nhập qua hộp thoại phương thức mà nút gating), dashboard sẽ ghi một tệp đi kèm nhỏ tại `~/.failproofai/next-audit.json`:

```json theme={null}
{
  "next_audit_at": 1780765200,
  "user_email": "you@example.com",
  "set_at": 1780160574
}
```

Tệp này được xác định phạm vi cho email nó được đặt — chuyển phiên CLI sang tài khoản khác sẽ ẩn bất kỳ lời nhắc nào thuộc về người dùng trước đó. Độ lệch mặc định là **7 ngày**, có thể cấu hình sau khi trình lập lịch được phát hành. Được tạo với quyền `0600` giống như `auth.json`.

Điểm cuối `/api/auth/reminder` của dashboard hiển thị `GET` (đọc), `POST` (đặt / lên lịch lại), và `DELETE` (xóa) và yêu cầu một phiên làm việc hoạt động.

## Nội dung của `~/.failproofai/auth.json`

```json theme={null}
{
  "access_token": "eyJhbGc…",
  "refresh_token": "9ede3e…",
  "access_expires_at": 1780160574,
  "refresh_expires_at": 1782748974,
  "user": { "id": "<uuid>", "email": "you@example.com" }
}
```

Được tạo với quyền `0600` (đọc/ghi chỉ dành cho chủ sở hữu). Token truy cập là JWT HS256 1 giờ; token làm mới là một chuỗi ngẫu nhiên không rõ ràng 256 bit mà máy chủ lưu trữ dưới dạng `SHA-256(token)`. Phát lại token làm mới được phát hiện ở phía máy chủ và thu hồi mọi phiên làm việc cho người dùng.

## Biến môi trường

| Biến                   | Mặc định                     | Mục đích                                                                                   |
| ---------------------- | ---------------------------- | ------------------------------------------------------------------------------------------ |
| `FAILPROOF_API_URL`    | `https://api.befailproof.ai` | Ghi đè URL cơ sở máy chủ API. Hữu ích cho phát triển cục bộ so với máy chủ API tự lưu trữ. |
| `FAILPROOFAI_AUTH_DIR` | `~/.failproofai`             | Ghi đè nơi `auth.json` được lưu trữ. Chủ yếu dành cho các bài kiểm tra.                    |

Xem [Environment variables](/vi/cli/environment-variables) để xem danh sách đầy đủ.

## Khắc phục sự cố

**"Could not reach the api-server"** — CLI không thể mở kết nối TCP đến `FAILPROOF_API_URL`. Kiểm tra mạng của bạn, hoặc đặt `FAILPROOF_API_URL` nếu bạn đang chạy máy chủ API tự lưu trữ.

**"Rate limited"** — quá nhiều nỗ lực đăng nhập trong cửa sổ 15 phút cho email đó (5/email) hoặc IP (20/IP), hoặc hết thời gian gửi lại 30 giây sau yêu cầu trước đó cho cùng email. Thông báo lỗi bao gồm cửa sổ thử lại trong vài giây.

**Code rejected** — OTP sai, hết hạn, hoặc hàng đó đạt khóa 5 lần đoán sai. Chạy `failproofai auth login` lại để yêu cầu mã mới.
