为什么我在运行 SUPABASE 注册功能时收到“匿名登录被禁用”的消息?

问题描述 投票:0回答:1

我正在使用 supabase 在 Next.js 中实现身份验证,当我尝试运行

signUp
函数时收到此错误。这是我得到的:

Anonymous sign-ins are disabled

这是我的代码:

动作.ts

'use server';

import { revalidatePath } from 'next/cache';
import { redirect } from 'next/navigation';

import { createClient } from '@/app/supabase/server';

export async function signup(formData: FormData) {
  const supabase = createClient();

  // type-casting here for convenience
  // in practice, you should validate your inputs
  const data = {
    email: formData.get('email') as string,
    password: formData.get('password') as string,
  };

  const { error } = await supabase.auth.signUp(data);

  if (error) {
    console.log(error.message);
    redirect('/error');
  }

  revalidatePath('/', 'layout')
  redirect('/home');
}

页面.tsx

import Link from 'next/link';

import { Button } from '@/components/ui/button';
import {
  Card,
  CardContent,
  CardDescription,
  CardHeader,
  CardTitle,
} from '@/components/ui/card';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { signup } from './actions';

export default async function Register() {
  return (
    <div className="flex flex-1 items-center justify-center min-h-screen">
      <Card className="mx-auto max-w-sm">
        <CardHeader>
          <CardTitle className="text-xl">Sign Up</CardTitle>
          <CardDescription>
            Enter your information to create an account
          </CardDescription>
        </CardHeader>
        <CardContent>
          <form>
            <div className="grid gap-4">
              <div className="grid gap-2">
                <Label htmlFor="email">Email</Label>
                <Input
                  id="email"
                  type="email"
                  placeholder="[email protected]"
                  required
                />
              </div>
              <div className="grid gap-2">
                <Label htmlFor="password">Password</Label>
                <Input
                  id="password"
                  placeholder="Must be at least 6 characters"
                  type="password"
                  required
                />
              </div>
              <Button formAction={signup} type="submit" className="w-full">
                Create an account
              </Button>
              <Button variant="outline">
                <span>Sign Up with GitHub</span>
              </Button>
              <Button variant="outline">
                <span>Sign Up with Google</span>
              </Button>
            </div>
          </form>
          <div className="mt-4 text-center text-sm">
            Already have an account?{' '}
            <Link href="/login" className="underline">
              Sign in
            </Link>
          </div>
        </CardContent>
      </Card>
    </div>
  );
}

我也在此处关注这些文档:

https://supabase.com/docs/guides/auth/server-side/nextjs

typescript next.js supabase
1个回答
0
投票

在将数据传递到之前检查数据的值:

await supabase.auth.signUp(data);

我猜电子邮件和密码都未定义?

© www.soinside.com 2019 - 2024. All rights reserved.