如果您想快速建立應用程序,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 ( <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 onSubmit={signUpFormHandler} className="grid gap-4"> <div className="grid gap-2"> <Label htmlFor="full-name">Full name</Label> <Input name="full-name" id="full-name" placeholder="Max" required /> </div> <div className="grid gap-2"> <Label htmlFor="email">Email</Label> <Input id="email" type="email" placeholder="m@example.com" required name="email" /> </div> <div className="grid gap-2"> <Label htmlFor="password">Password</Label> <Input name="password" id="password" type="password" /> </div> <Button type="submit" className="w-full"> Create an account </Button> </form> <div className="mt-4 text-center text-sm"> Already have an account?{" "} <Link href="#" className="underline"> Sign in </Link> </div> </CardContent> </Card> ); }
這只是一個範例,描述了預期的行為、正在發生的事情以及應該做什麼。
只是想分享一下,以防像我這樣的 Appwrite 新手遇到這個錯誤。總而言之,我發現幾乎在所有情況下,當我遇到任何範圍錯誤或用戶未經授權的錯誤時,都會創建一個會話,或者至少在調用該方法修復這些問題之前確保會話存在。所以請嘗試一下並讓我知道會發生什麼
以上是[已解決] Appwrite 使用者角色缺失或缺失範圍錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!