'use client'; import Image from 'next/image'; import Link from 'next/link'; import { useSearchParams } from 'next/navigation'; import { useState } from 'react'; import { buildFrontendHandoffUrl, login, withNext } from '@/lib/auth-client'; export default function LoginPage() { const searchParams = useSearchParams(); const nextPath = searchParams?.get('next') || '/'; const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); setLoading(true); setError(''); try { const response = await login(username, password); window.location.replace(buildFrontendHandoffUrl(response, nextPath)); } catch (err) { setError(err instanceof Error ? err.message : '登录失败,请稍后重试'); } finally { setLoading(false); } }; return (
Boardware logo
Auth Portal

Boardware Agent Sandbox

这个入口只负责鉴权。成功后会把你直接送到为你分配的专属实例 URL,后续前后端请求都留在那套容器里。

容器边界 登录注册先经过独立 auth portal,再跳到专属实例。一用户一套前后端容器不变。
目标页面 当前登录完成后将回到:{nextPath}

登录

输入已有账号,认证完成后直接进入目标容器前端。

setUsername(event.target.value)} autoComplete="username" placeholder="例如:bwgdi" required />
setPassword(event.target.value)} autoComplete="current-password" placeholder="输入密码" required />
{error}
还没有账号? 去注册
); }