Appwrite는 애플리케이션을 빠르게 구축하려는 경우 사용할 수 있는 멋진 도구이지만 때로는 실망스러울 수 있는 오류가 발생할 수 있으며 저에게 이러한 오류는 항상 "사용자 역할 누락"에 관한 것이었습니다. "이 작업을 수행할 권한이 없는 사용자" 등. 모든 작업을 수행하는 내 앱의 모든 인스턴스에 대한 전체 액세스 권한이 있음에도 불구하고.
하지만 마침내 나는 그 문제들을 모두 고칠 수 있는 방법을 찾았습니다(글쎄 전부는 아닐 수도 있지만 그렇게 생각하고 싶습니다).
그래서 이 디스코드 게시물은 사실 아주 미묘하게 설명했습니다.
중요한 점은 프로젝트에서 사용하는 방법 중 하나를 사용하여 세션이 있는지 확인하는 것입니다.
이 오류가 발생한 예를 들어보겠습니다. 그러면 더 명확해질 수 있습니다.
가입 페이지가 있는데 사용자가 계정 만들기 또는 가입을 클릭하자마자 확인 이메일이 실행되어야 하는데 사용자가 승인되지 않았다는 오류가 발생하고 싶습니다. 해결책은 이메일을 트리거하기 전에 세션을 생성하는 것이었습니다. 따라서 이메일을 트리거하기 전에 세션을 생성하는 방법은 다음 코드를 참조하십시오.
"use client"; import Link from "next/link"; import { FormEvent } from "react"; 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 { createAuthAccount } from "@/app/appwrite/createAuthAccount"; import { createLoginSession } from "@/app/appwrite/createLoginSession"; import { useRouter } from "next/navigation"; import { sendVerificationEmail } from "@/app/appwrite/sendVerificationEmail"; export const description = "A sign up form with first name, last name, email and password inside a card. There's an option to sign up with GitHub and a link to login if you already have an account"; export default function LoginForm() { const router = useRouter(); const signUpFormHandler = async (event: FormEvent) => { event.preventDefault(); const formData = new FormData(event.target as HTMLFormElement); const data = Object.fromEntries(formData.entries()); const createdAccount = await createAuthAccount({ email: data?.email.toString(), password: data?.password.toString(), name: data?.["full-name"].toString(), }); if (createdAccount?.$id) { await createLoginSession({ email: data?.email.toString(), password: data?.password.toString(), }); await sendVerificationEmail(); } }; return (); } Sign Up Enter your information to create an account Already have an account?{" "} Sign in
이것은 의도된 동작이 무엇인지, 무슨 일이 일어나고 있는지, 무엇을 해야 하는지를 보여주는 예일 뿐입니다.
나처럼 Appwrite를 처음 사용하는 초보자가 이 오류에 직면할 경우를 대비해 공유하고 싶었습니다. 전체적으로 나는 범위 오류나 사용자 승인 오류가 발생한 후 세션을 생성하거나 적어도 해당 메서드를 호출하기 전에 세션이 존재하는지 확인하는 거의 모든 경우에 이러한 문제가 해결되었음을 발견했습니다. 그러니 이것을 시도해보고 무슨 일이 일어나는지 알려주세요
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3