完整示例会把原始认证错误对象显示给未登录访问者
原文依据:4 处参考资料说明 `errors.raw` 包含原始 Clerk 错误数组,但完整登录和注册示例使用 `JSON.stringify(errors)` 将整个错误对象直接渲染到认证页面。
如果原始错误含有内部错误代码、详细原因或账户状态信息,访问登录或注册页的人可能看到超出用户界面所需的认证诊断信息。可见内容取决于 Clerk 实际返回的错误。
资料明确说明 `errors` 可包含原始 Clerk 错误数组,而两个“完整示例”都把整个 `errors` 对象渲染到公开认证页面。若这些示例用于生产且 Clerk 返回内部诊断字段,未登录访问者可能看到超出友好提示所需的信息。来源未显示原始数组具体包含秘密,因此不能断言凭据已泄露。用户可要求生产界面仅展示经筛选的字段消息,并将完整诊断限制在受保护日志中。
// Global errors (not tied to a field)errors?.global // ClerkGlobalHookError[] | null// Raw error arrayerrors?.raw // ClerkError[] | null```查看另外 3 个位置
</div> <button type="submit" disabled={fetchStatus === 'fetching'}> Continue </button> </form> {errors && <p>{JSON.stringify(errors, null, 2)}</p>} </> )// Global errorserrors?.global // ClerkGlobalHookError[] | null// Raw error arrayerrors?.raw // ClerkError[] | null``` </div> <button type="submit" disabled={fetchStatus === 'fetching'}> Continue </button> </form> {errors && <p>{JSON.stringify(errors, null, 2)}</p>} {/* Required for sign-up flows. Clerk's bot sign-up protection is enabled by default */} <div id="clerk-captcha" /> </>