为什么在登录集成了 Logto 的应用时可能会看到 404 错误
你是否在尝试登录集成了 Logto 的应用时遇到过 "404 Not Found" (未找到)错误?本文将解释为什么会出现这种情况,以及你该如何避免它。
背景
你是否曾尝试登录一个使用 Logto 进行身份验证的应用,并遇到了 "404 not found"(未找到)错误?你的终端用户是否也有过类似报告?

如果你直接访问了登录页(例如,https://your-app.com/sign-in
)而没有通过你的应用的预期登录流程时,就可能会发生这种情况。
原因如下:
OIDC 流程的重要性
Logto 依赖于 OpenID Connect (OIDC) 协议 来实现安全认证。当你通过正常的应用流程登录时(通常是在应用中点击登录按钮),应用会与 Logto 的 OIDC 服务器发起通信。这个通信过程被称为“授权请求”,它很重要,因为它会首先对调用者进行各种校验,然后在你的浏览器和服务器之间建立一个安全的会话(由 cookie 管理)。
当用户直接访问 “/sign-in” 页面时,问题就来了,因为这绕过了应用内部触发 OIDC 授权请求的逻辑。结果就是,服务器无法识别你的浏览器有有效会话,从而导致 404 错误。
解决方案
有两种主要方法可以避免这个问题:
始终使用应用的登录按钮
不要直接访问 “/sign-in” 页面,而是按照应用提供的预期登录流程操作。点击应用内的 "登录" 按钮时,会正确发起 OIDC 授权请求,并建立所需的会话。
自动重定向用户
如果你的 Logto 实例中只有一个应用,你可以尝试实现逻辑,自动拦截用户无有效会话访问 “/sign-in” 页面的行为,并将他们重定向回带有登录按钮的主页面。
为此,Logto 引入了“未知 会话重定向 URL”设置。当你设置好该 URL 后,Logto 会自动将用户重定向到指定页面,而不是显示 404 错误。例如,你可以将用户重定向到你的应用首页或自定义登录界面。在重定向之后,你的客户端应用应该发起新的登录流程。
你可以前往 Logto 控制台的 Logto Cloud > 登录体验 > 注册和登录 > 高级选项 配置你的备用 URL。
例如,Logto Cloud 将其设置为 https://cloud.logto.io/
。设置完成后,那些在没有有效会话的情况下访问 /sign-in
的用户将会被发送到该 URL 以重新开始认证。
关于提升体验的更多思考
我们也在尝试提升用户体验,例如,至少在 “/unknown-session” 页面上添加有用提示,向用户解释 404 的原因,并让用户清楚下一步该做什么,而不是感到困惑和无助。例如,Logto 支持为登录错误页面自定义支持邮箱和网站地址,用户遇到错误时会看到你的联系方式,可以主动寻求协助。
我们也会考虑实现其它安全措施以缓解问题,比如当当前 Logto 实例中只检测到一个应用时,自动重定向到 “Sign-out redirect URI”(通常为应用主页),或者添加额外配置以展示自定义信息。
总结
“/sign-in” 页面的 404 not found(无效会话)错误,通常是因为用户直接访问登录页面 URL,从而绕过了正常触发授权请求的应用登录流程,此时没有建立有效会话(cookie 管理)。
理解此流程及其重要性后,你可以避免该错误,享受与 Logto 集成应用的流畅登录体验。
如果你有想法,欢迎随时联系我们进行交流。