身份验证
用户会话
学习如何在 NEXTDEVKIT 中使用用户会话
💻 客户端使用
在客户端组件中访问会话数据
const { user, session } = useSession();
等待会话加载
const { user, session, loaded } = useSession();
if (!loaded) return <div>加载中...</div>;
重新加载会话
const { reloadSession } = useSession();
await reloadSession();
🖥️ 服务器端使用
获取会话
import { getSession } from '@/lib/auth/server';
export default async function ServerComponent() {
const session = await getSession();
if (!session?.user) {
redirect('/auth/login');
}
return (
<div>
<h1>欢迎,{session.user.name}!</h1>
<p>邮箱:{session.user.email}</p>
</div>
);
}
🔒 安全功能
更改密码要求
// 密码验证
const passwordSchema = z.string()
.min(8, '密码必须至少8个字符')
.regex(/[A-Z]/, '密码必须包含至少一个大写字母')
.regex(/[a-z]/, '密码必须包含至少一个小写字母')
.regex(/[0-9]/, '密码必须包含至少一个数字');
🔧 故障排除
常见问题
环境变量:
# 检查是否设置了所有必需的变量
echo $BETTER_AUTH_SECRET
echo $GOOGLE_CLIENT_ID
echo $GITHUB_CLIENT_ID
OAuth 配置:
- 验证回调 URL 完全匹配
- 检查客户端 ID 和密钥是否正确
- 确保 OAuth 应用已启用
会话问题:
- 清除浏览器 Cookie
- 检查会话过期设置
- 验证数据库连接
邮箱验证:
- 检查邮件提供商配置
- 验证邮件模板是否正确
- 检查垃圾邮件文件夹