--- title: 认证页面 description: 自定义登录、注册等页面 --- Halo 2.20 重构了登录、注册等页面,现在支持通过主题自定义认证相关的页面。 考虑到登录、注册页面的复杂性,我们通常建议仅自定义页面样式,或者根据系统中提供的代码片段自行组合,如果要完全自行实现这些页面,请务必进行完整的流程测试,这**可能因为代码逻辑错误导致无法登录**。 这篇文档只会讲解自定义登录、注册等页面的原理,以及一些自定义的场景,**建议在进行代码编写的时候结合系统自带的模板源码**,源码位置:[application/src/main/resources/templates](https://github.com/halo-dev/halo/tree/25086ee3e63f0c8b6ed380140a068c44404ef2b2/application/src/main/resources/templates) ## 原理讲解 要实现自定义登录、注册等模板,只需要在主题的 `templates` 目录中新建与 Halo 源码中 `application/src/main/resources/templates` 同名的模板文件即可,下面是 Halo 源码中的目录结构: ```bash ├── challenges │ └── two-factor │ ├── totp.html 两步验证页面 ├── gateway_fragments │ ├── common.html 通用的模板片段 │ ├── input.html 和输入框有关的模板片段 │ ├── layout.html 通用的布局模板 │ ├── login.html 登录相关的模板片段 │ ├── logout.html 退出登录相关的模板片段 │ ├── password_reset_email_reset.html 重置密码相关的模板片段 │ ├── password_reset_email_send.html 发送重置密码邮件相关的模板片段 │ ├── signup.html 注册相关的模板片段 │ ├── totp.html 两步验证相关的模板片段 ├── password-reset │ └── email │ ├── reset.html 密码重置页面 │ ├── send.html 发送重置密码邮件页面 ├── login.html 登录页面 ├── login_local.html 本地登录方式的表单模板 ├── logout.html 退出登录页面 ├── setup.html 系统初始化页面 ├── signup.html 注册页面 ``` 假设我们要在主题覆盖登录页面(login.html),那么只需要在主题的 templates 目录中新建一个 `login.html` 即可,意味着只要主题提供上方的目录以及对应的模板文件,那么就会优先使用主题的模板。 ## 自定义场景 ### 自定义布局(推荐) 覆盖默认的布局页面,以实现和主题融合。 Halo 系统自带的布局模板为 `gateway_fragments/layout.html`,所以我们在主题的 `templates` 目录中新建一个相同路径的模板即可,下面我们以 Halo 默认主题 [Earth](https://github.com/halo-dev/theme-earth) 为例: ```html {2,17-20,26} title="templates/gateway_fragments/layout.html"