Logo文档
身份验证

用户会话

学习如何在 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
  • 检查会话过期设置
  • 验证数据库连接

邮箱验证

  • 检查邮件提供商配置
  • 验证邮件模板是否正确
  • 检查垃圾邮件文件夹