OAuth2 登录与会话配置
DioxusPress 原生支持 GitHub、Google、Discord 与 X (Twitter) 四种主流第三方 OAuth2(含 PKCE 扩展)登录方式,无需维护明文密码库或发信验证码服务。
1. 在 site.json 声明显示顺序
{
"auth": {
"enabled": true,
"providers": ["github", "google", "discord", "twitter"]
}
}
如果某个 Provider 尚未申请密钥,无需修改代码,只要不在 .env 中填写它的 Client ID,或从 providers 数组中移除即可。
2. 在 .env 注入敏感凭据
以 GitHub OAuth App 为例,回调地址填写 <BASE_URL>/api/auth/callback/github:
BASE_URL=https://your-domain.com
JWT_SECRET=<使用 openssl rand -hex 32 生成的高强度随机密钥>
GITHUB_CLIENT_ID=Iv1.xxxxxxxxxxxxxxxx
GITHUB_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Google、Discord、Twitter 同理分别对应 GOOGLE_CLIENT_*、DISCORD_CLIENT_* 与 TWITTER_CLIENT_*(详见仓库根目录 .env.example)。
3. 提权首个管理员(Admin)
所有首次通过 OAuth 登录的新用户默认角色为普通成员(member)。登录一次后,在服务器或本地终端执行内置提权脚本:
set -a; source .env; set +a
./scripts/promote_admin.sh <你的用户昵称>
随后在网页端点击「退出登录」并重新登录一次,新签发的会话令牌即携带 admin 权限,顶栏用户菜单将出现 🛡️ 管理后台(/admin) 入口。

