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