Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 

3.8 KiB

登录 Widget 使用指南

概述

登录 Widget 是一个轻量 Headless SDK(0.8KB),通过 login() 函数调用 New API 登录接口。不注入任何 DOM 或样式,你完全控制 UI。

仅支持密码登录。


快速开始

<script src="https://lancerouter.ai/static/login-widget.js"></script>
<script>
  const result = await NewApiLoginWidget.login({
    apiUrl: 'https://lancerouter.ai',
    username: 'user',
    password: 'pass'
  });

  if (result.success) {
    console.log('登录成功', result.data);
  } else {
    console.log('登录失败', result.message);
  }
</script>

API 参考

NewApiLoginWidget.login(options)

参数 类型 必填 说明
apiUrl string New API 服务地址
username string 用户名或邮箱
password string 密码

返回值: Promise<{ success: boolean, data?: object, message?: string }>

成功:

{
  "success": true,
  "data": {
    "id": 1,
    "username": "user",
    "display_name": "用户",
    "role": 1,
    "status": 1,
    "group": "default"
  }
}

失败:

{
  "success": false,
  "message": "用户名或密码错误,或用户已被封禁"
}

data 字段

字段 类型 说明
id number 用户 ID,调用其他 API 时需要
username string 用户名
display_name string 显示名称
role number 角色(1=普通,10+=管理员,100+=超管)
status number 状态
group string 用户组

登录后调用其他 API

登录成功后浏览器会自动存储 session cookie,后续请求带 credentials: 'include'New-Api-User 头即可。

获取用户信息

const res = await fetch('https://lancerouter.ai/api/user/self', {
  credentials: 'include',
  headers: { 'New-Api-User': String(result.data.id) }
});
const data = await res.json();

创建 API Token

const res = await fetch('https://lancerouter.ai/api/token/', {
  method: 'POST',
  credentials: 'include',
  headers: {
    'Content-Type': 'application/json',
    'New-Api-User': String(result.data.id)
  },
  body: JSON.stringify({
    name: 'my-token',
    remain_quota: 1000000,
    unlimited_quota: false
  })
});
const data = await res.json();

完整示例

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>我的网站</title>
</head>
<body>
  <form id="login-form">
    <input id="username" placeholder="用户名或邮箱" required>
    <input id="password" type="password" placeholder="密码" required>
    <button type="submit">登录</button>
  </form>
  <p id="msg"></p>

  <script src="https://lancerouter.ai/static/login-widget.js"></script>
  <script>
    document.getElementById('login-form').addEventListener('submit', async (e) => {
      e.preventDefault();
      const result = await NewApiLoginWidget.login({
        apiUrl: 'https://lancerouter.ai',
        username: document.getElementById('username').value,
        password: document.getElementById('password').value,
      });
      if (result.success) {
        localStorage.setItem('user', JSON.stringify(result.data));
        document.getElementById('msg').textContent = '欢迎, ' + result.data.username;
      } else {
        document.getElementById('msg').textContent = result.message;
      }
    });
  </script>
</body>
</html>

注意事项

  1. 页面必须 HTTPS — session cookie 带 Secure 标志,HTTP 页面下浏览器不会存储
  2. 每个请求带 New-Api-User — 值为登录返回的 data.id,否则接口返回未授权
  3. 每个请求带 credentials: 'include' — 否则浏览器不会携带 cookie
  4. 不支持 2FA — 启用两步验证的账户会返回失败提示
  5. Cookie 有效期 30 天