Рэалізацыя ўваходу без пароля ў праекце Next.js 13 з NextAuth.js і Prisma

без пароля
nextjs
nextauth
prisma
Уваход без пароля ў NextJs 13 cover image

У гэтым артыкуле будуць разгледжаны крокі, неабходныя для рэалізацыі аўтэнтыфікацыі без пароля ў праекце Next.js з выкарыстаннем бібліятэкі NextAuth.js. Акрамя таго, для дасягнення гэтай мэты мы будзем выкарыстоўваць Prisma ў якасці адаптара базы дадзеных.

Аўтэнтыфікацыя без пароля - гэта інавацыйны падыход, які пазбаўляе ад неабходнасці традыцыйных камбінацый імя карыстальніка і пароля. Замест гэтага ён прапануе больш бяспечны і зручны вопыт аўтэнтыфікацыі за кошт выкарыстання альтэрнатыўных метадаў, такіх як магічныя спасылкі па электроннай пошце або аднаразовыя коды, адпраўленыя праз SMS.

Next.js - папулярны фрэймворк React для стварэння вэб-прыкладанняў, вядомы сваёй прастатой і эфектыўнасцю. Мы можам лёгка ўключыць аўтэнтыфікацыю без пароля ў наш праект, інтэграваўшы NextAuth.js, бібліятэку аўтэнтыфікацыі, распрацаваную спецыяльна для Next.js.

Акрамя таго, мы будзем разлічваць на Prisma ў якасці нашага адаптара базы дадзеных. Prisma - гэта інструмент ORM (аб'ектна-рэляцыйнае адлюстраванне), які спрашчае ўзаемадзеянне з базамі дадзеных, прадастаўляючы бяспечны для тыпу і аўтаматычна створаны канструктар запытаў. Ён падтрымлівае некалькі баз даных, у тым ліку PostgreSQL, MySQL і SQLite, што робіць яго універсальным выбарам для нашай рэалізацыі аўтэнтыфікацыі.

У гэтым кіраўніцтве мы дамо пакрокавыя інструкцыі аб тым, як наладзіць і наладзіць аўтэнтыфікацыю без пароля з дапамогай NextAuth.js у праекце Next.js. Мы таксама прадэманструем, як інтэграваць Prisma ў якасці нашага адаптара базы дадзеных, што забяспечвае бясшвоўную сувязь паміж нашым дадаткам і базай дадзеных.

Цяпер мы вывучым, як палепшыць бяспеку і карыстацкі досвед нашага прыкладання Next.js з дапамогай аўтэнтыфікацыі без пароля і магчымасцей NextAuth.js і Prisma. Давайце пачнем.

Што такое ўваход без пароля?

Уваход без пароля, як вынікае з назвы, - гэта метад аўтэнтыфікацыі, які пазбаўляе ад неабходнасці выкарыстоўваць традыцыйныя камбінацыі імя карыстальніка і пароля. Замест гэтага ён выкарыстоўвае альтэрнатыўныя сродкі пацверджання асобы карыстальніка, такія як магічныя спасылкі па электроннай пошце або аднаразовыя коды, адпраўленыя праз SMS. Такі падыход дае некалькі пераваг перад традыцыйнымі метадамі ўваходу. Па-першае, гэта ліквідуе рызыку ўразлівасцяў, звязаных з паролямі, такіх як слабыя паролі або паўторнае выкарыстанне пароляў. Па-другое, гэта спрашчае працу карыстальніка, пазбаўляючы ад неабходнасці запамінаць і ўводзіць складаныя паролі.

Каб рэалізаваць уваход без пароля з дапамогай магічных спасылак электроннай пошты або аднаразовых кодаў, нам патрэбны сервер SMTP (Simple Mail Transfer Protocol).

Сервер SMTP адказвае за адпраўку электроннай пошты праз Інтэрнэт. У кантэксце аўтэнтыфікацыі без пароля сервер адпраўляе магічныя спасылкі або аднаразовыя коды на зарэгістраваны адрас электроннай пошты карыстальніка. Калі карыстальнік ініцыюе працэс уваходу, электронны ліст з унікальнай спасылкай або кодам ствараецца і адпраўляецца карыстальніку. Затым карыстальнік можа націснуць на спасылку або ўвесці код, каб завяршыць працэс аўтэнтыфікацыі. Сервер SMTP дзейнічае як пасярэднік паміж праграмай і службай электроннай пошты карыстальніка, забяспечваючы бяспечную і надзейную дастаўку паведамленняў аўтэнтыфікацыі. Выкарыстоўваючы SMTP-сервер, мы можам эфектыўна рэалізаваць уваход без пароля і забяспечыць бясшвоўную аўтэнтыфікацыю для нашых карыстальнікаў.

Давайце пачнем!

Спачатку нам трэба стварыць новы праект Next.js. Для гэтага выкарыстоўвайце наступную каманду:

npx create-next-app@latest

Generating a new NextJS project

Пасля таго, як вы стварылі новы праект Next.js, вы можаце перайсці ў нядаўна створаны каталог праекта.

Змяніўшы каталог у праекце, вы зможаце даследаваць розныя тэчкі і файлы, якія складаюць структуру праекта Next.js.

Project Structure

Разуменне структуры праекта вельмі важна для эфектыўнай распрацоўкі і арганізацыі вашага прыкладання Next.js. Звярнуўшыся да афіцыйнай дакументацыі, вы можаце выкарыстоўваць лепшыя практыкі і атрымаць уяўленне аб тым, як структураваць свой код, кіраваць статычнымі актывамі і ствараць шматразовыя кампаненты.

Устаноўка нашых залежнасцяў

Каб уключыць аўтэнтыфікацыю без пароля ў нашым праекце Next.js з выкарыстаннем NextAuth.js, мы павінны спачатку ўсталяваць неабходныя залежнасці. Выканайце каманду yarn add next-auth nodemailer, каб дадаць і NextAuth.js, і nodemailer у наш праект.

Мы спецыяльна выкарыстоўваем nodemailer, паколькі гэта папулярны і універсальны модуль для адпраўкі электронных лістоў у Node.js. Ён забяспечвае просты і надзейны спосаб адпраўкі магічных спасылак або аднаразовых кодаў, неабходных для аўтэнтыфікацыі без пароля, па электроннай пошце.

Далей давайце інтэгруем Prisma ў якасці нашага адаптара базы дадзеных. Пачніце з усталёўкі неабходных пакетаў Prisma з дапамогай каманды:

yarn add @prisma/client @next-auth/prisma-adapter

Гэтыя пакеты забяспечаць бясшвоўную сувязь паміж нашым дадаткам Next.js і базай дадзеных. Акрамя таго, нам таксама трэба ўсталяваць Prisma ў якасці залежнасці ад распрацоўшчыка, запусціўшы:

yarn add prisma --dev

Гэты крок гарантуе, што ў нас ёсць неабходныя інструменты для працы з Prisma і яе аўтаматычна створаным канструктарам запытаў для ўзаемадзеяння з базай дадзеных.

Усталяваўшы гэтыя залежнасці, мы заклалі аснову для рэалізацыі аўтэнтыфікацыі без пароля з выкарыстаннем NextAuth.js і Prisma ў нашым праекце Next.js.

Налада Prisma

Неабходна наладзіць Prisma і мець доступ да сервера SMTP для адпраўкі электроннай пошты, каб выкарыстоўваць аўтэнтыфікацыю без пароля ў праекце Next.js. Гэты падручнік дапаможа вам выкарыстоўваць ваш асабісты ўліковы запіс Gmail для адпраўкі электроннай пошты. Для паспяховай наладкі выканайце наступныя дзеянні.

Спачатку стварыце тэчку «prisma» у корані вашага праекта. У гэтай папцы будуць захоўвацца файлы і канфігурацыі, звязаныя з Prisma. Затым у тэчцы «prisma» стварыце новы файл пад назвай «schema.prisma». Файл схемы вызначае структуру вашай базы дадзеных і служыць у якасці плана для аўтаматычна створанага кода Prisma.

Калі вы пачатковец у канцэпцыі схемы, не хвалюйцеся! Схема вызначае табліцы, палі, сувязі і абмежаванні вашай базы дадзеных. Каб стварыць схему, вы можаце звярнуцца да афіцыйнай дакументацыі NextAuth.js і скапіяваць прыведзены там прыклад схемы. Гэтая схема з'яўляецца адпраўной кропкай і можа быць настроена ў адпаведнасці з патрабаваннямі вашага прыкладання.

Schema file

Далей стварыце файл «.env» у корані вашага праекта. У гэтым файле будуць захоўвацца зменныя асяроддзя, у тым ліку неабходныя канфігурацыі для вашага сервера SMTP. Каб запоўніць файл ".env", вы можаце скапіяваць прыклады канфігурацый, прадстаўленыя ніжэй. Не забудзьцеся ўвесці ўліковыя дадзеныя ўліковага запісу Gmail і налады сервера SMTP у адпаведныя палі.

EMAIL_SERVER_USER="YourGmailAddress"
EMAIL_SERVER_PASSWORD="GmailPassOrGeneratedPass"
EMAIL_SERVER_HOST=smtp.gmail.com
EMAIL_SERVER_PORT=587
EMAIL_FROM="noreply@example.com"

NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=ThisNeedsToBeSuperSecret

Выканаўшы гэтыя крокі, вы наладзілі Prisma і наладзілі сервер SMTP для адпраўкі лістоў з дапамогай вашага ўліковага запісу Gmail. Гэтыя падрыхтоўкі вельмі важныя для ўключэння беспарольнай аўтэнтыфікацыі ў вашым праекце Next.js.

Заўвага

Вы павінны стварыць пароль праграмы, калі вы ўключылі двухфактарную аўтэнтыфікацыю (2FA) для вашага ўліковага запісу Google. Пароль праграмы - гэта асобны пароль, які дае доступ да пэўных праграм або прылад без раскрыцця пароля асноўнага ўліковага запісу Google. Выконвайце інструкцыі ніжэй, каб стварыць пароль праграмы.

  1. Перайдзіце на старонку налад уліковага запісу Google, наведаўшы https://myaccount.google.com/.

  2. Перайдзіце на ўкладку «Бяспека».

  3. Знайдзіце раздзел «2FA», пракруціце ўніз і выберыце «Паролі праграм».

Google Account Security

Google Account Security

  1. Вам можа быць прапанавана яшчэ раз увесці пароль вашага ўліковага запісу Google для праверкі бяспекі.

  2. У выпадальным меню «Выбраць праграму» выберыце «Пошта» або «Іншае (Карыстальніцкае імя)».

  • Калі опцыя «Пошта» даступная, выберыце яе.

  • Калі опцыя «Пошта» недаступная, выберыце «Іншае (карыстальніцкае імя)» і ўвядзіце карыстальніцкае імя для ідэнтыфікацыі.

  1. Націсніце на кнопку «Стварыць» або «Стварыць пароль».

  2. Google створыць для вас унікальны пароль праграмы. Запішыце гэты пароль, бо мы будзем выкарыстоўваць яго ў нашым дадатку для адпраўкі электронных лістоў.

  3. Выкарыстоўвайце гэты згенераваны пароль праграмы ў канфігурацыі сервера SMTP вашага прыкладання Next.js. Заменіце звычайны пароль уліковага запісу Gmail на гэты пароль праграмы.

Гэта гарантуе, што нават пры ўключанай 2FA ваша праграма можа бяспечна адпраўляць электронныя лісты з дапамогай вашага ўліковага запісу Gmail.

PostgreSQL з выкарыстаннем Supabase

Перш чым мы зможам працягнуць, мы павінны пераканацца, што база дадзеных для нашага праекта функцыянуе правільна. Для гэтай дэманстрацыі мы рэкамендуем выкарыстоўваць базу дадзеных Supabase PostgreSQL. Каб пачаць працу з праектам Supabase і атрымаць URL злучэння PostgreSQL, выканайце наступныя дзеянні:

  1. Перайдзіце на supabase.io і ўвайдзіце ў свой уліковы запіс або стварыце новы, калі ў вас яго няма.

  2. Пасля ўваходу ў сістэму вы будзеце накіраваны на прыборную панэль Supabase. Націсніце «Стварыць новы праект», каб пачаць новы праект.

  3. Назавіце свой праект і абярыце рэгіён, бліжэйшы да вашага бягучага месцазнаходжання. Запомніце пароль, ён вам спатрэбіцца пазней.

  4. Калі вы стварылі праект, вы трапіце на панэль кіравання праектам. Націсніце «База даных» на левай бакавой панэлі, каб атрымаць доступ да налад базы дадзеных.

  5. У раздзеле «База даных» вы знойдзеце URL злучэння PostgreSQL. Гэты URL змяшчае ўсю неабходную інфармацыю для падлучэння да базы дадзеных вашага праекта Supabase, такую ​​як хост, порт, імя базы дадзеных, імя карыстальніка і пароль. Ён будзе адлюстроўвацца ў фармаце: postgres://<імя карыстальніка>:<пароль>@<хост>:<порт>/<база даных>

Postgresql connection string

  1. Скапіруйце URL злучэння PostgreSQL і захавайце яго ў бяспецы. Ён вам спатрэбіцца, каб усталяваць сувязь паміж вашым дадаткам і базай дадзеных Supabase.
    // .env
    
    DATABASE_URL=postgresql://postgres:[Password]@db.ixjsisbwdafsjvgifliu.supabase.co:5432/postgres
    ```

Зараз пераканаемся, што мы стварылі наш кліент Prisma, выканаўшы наступную каманду: `npx prisma generate`.

Кліент Prisma - гэта кліент базы дадзеных, аўтаматычна створаны на аснове вашай схемы. Па змаўчанні кліент Prisma ствараецца ў тэчцы `node_modules/.prisma/client`, але вы можаце [вызначыць карыстальніцкае месцазнаходжанне пры неабходнасці](https://www.prisma.io/docs/concepts/components/prisma-client/working-with-prismaclient/generating-prisma-client#using-a-custom-output-path).

Далей мы пяройдзем да стварэння нашай першапачатковай міграцыі. Выканайце наступную каманду: `npx prisma migrate dev`. Вы можаце даць кожнай міграцыі апісальную назву.

У Prisma міграцыя - гэта метад, які выкарыстоўваецца для кіравання карэкціроўкамі вашай схемы базы дадзеных з цягам часу. Гэта дазваляе змяняць структуру базы дадзеных без страты раней існуючых даных. Гэтыя міграцыі маюць вырашальнае значэнне, паколькі яны гарантуюць, што ваша схема базы дадзеных адпавядае патрэбам вашага прыкладання па меры іх змены. З дапамогай інструмента міграцыі Prisma вы можаце зручна версіраваць, прымяняць і вярнуць гэтыя змены, спрашчаючы працу ў камандзе і падтрымліваючы адзіную схему базы дадзеных у розных асяроддзях.

Цяпер, калі мы праверым нашу базу дадзеных, мы зможам убачыць змены ад нашай першапачатковай міграцыі, адлюстраваныя ў раздзеле базы дадзеных.

Выконваючы першапачатковую міграцыю, мы ўнеслі змены ў нашу схему базы дадзеных, як гэта вызначана ў сцэнарыі міграцыі.

![Database Tables after Migration](https://drive.google.com/uc?export=view&id=1PZ6ban5h4VZs3UHQoJS_5kNYkhqs-MAx)

### Наладжванне NextAuthJS з адаптарам Prisma

У прылажэнні Next.js NextAuthJS выкарыстоўвае для кіравання запытамі аўтэнтыфікацыі маршрут ахопу ўсяго, таксама вядомы як падстаноўны або запасны маршрут. Гэты дынамічны маршрут вызначаецца з дапамогай файлавай сістэмы маршрутызацыі ў Next.js.

Стварыце тэчку з назвай «**api**» у вашым каталогу «**app**». У папцы «**api**» стварыце папку «**auth**». У тэчцы «**auth**» стварыце ўсеабходны маршрут пад назвай «**[...nextauth]**» як папку. І, нарэшце, стварыце файл «**route.ts**» у тэчцы агульнага маршруту і дадайце наступны код.

```jsx
// app/api/auth/[...nextauth]/route.ts
import { PrismaAdapter } from '@next-auth/prisma-adapter';
import { PrismaClient } from '@prisma/client';
import NextAuth from 'next-auth';
import EmailProvider from 'next-auth/providers/email';

const prisma = new PrismaClient();

export const authOptions = {
  adapter: PrismaAdapter(prisma),
  providers: [
    EmailProvider({
      server: {
        host: process.env.EMAIL_SERVER_HOST,
        port: process.env.EMAIL_SERVER_PORT,
        auth: {
          user: process.env.EMAIL_SERVER_USER,
          pass: process.env.EMAIL_SERVER_PASSWORD,
        },
      },
      from: process.env.EMAIL_FROM,
    }),
  ]
};

const handler = NextAuth(authOptions);

export { handler as GET, handler as POST };

У файл маршруту для ўсіх мы імпартуем бібліятэку NextAuthJS і наладжваем параметры аўтэнтыфікацыі, правайдэраў і канфігурацыі. NextAuthJS апрацоўвае аналіз ўваходных запытаў, вызначае неабходнае дзеянне аўтэнтыфікацыі і выконвае адпаведную логіку ў адпаведнасці з зададзенымі параметрамі.

Пададзены код наладжвае NextAuthJS з адаптарам Prisma для аўтэнтыфікацыі з дапамогай пастаўшчыка паслуг электроннай пошты. Давайце растлумачым кожнае выказванне:

  1. Імпарт:
  • PrismaAdapter і PrismaClient імпартуюцца з @next-auth/prisma-adapter і @prisma/client адпаведна. Яны выкарыстоўваюцца для інтэграцыі NextAuthJS з Prisma.

  • NextAuth імпартуецца з next-auth і з'яўляецца асноўнай бібліятэкай для апрацоўкі аўтэнтыфікацыі ў праграмах Next.js.

  • EmailProvider імпартуецца з next-auth/providers/email і выкарыстоўваецца ў якасці пастаўшчыка для аўтэнтыфікацыі на аснове электроннай пошты.

  1. Налада Prisma:
  • Экземпляр PrismaClient ствараецца з дапамогай new PrismaClient(). Гэта дазваляе мець зносіны з Prisma ORM і базавай базай дадзеных.
  1. Параметры аўтэнтыфікацыі:
  • authOptions - гэта аб'ект, які вызначае канфігурацыю аўтэнтыфікацыі ў NextAuthJS.

  • Уласцівасць adapter усталявана ў PrismaAdapter(prisma), якое злучае NextAuthJS з Prisma з дапамогай PrismaAdapter.

  • Масіў providers змяшчае аднаго правайдэра, EmailProvider. Ён настроены з неабходнымі дадзенымі сервера электроннай пошты і адрасам электроннай пошты ад.

  1. Апрацоўшчык NextAuth:
  • Функцыя NextAuth выклікаецца з authOptions у якасці аргумента, ствараючы апрацоўшчык аўтэнтыфікацыі.

  • Атрыманы апрацоўшчык прысвойваецца зменнай handler.

  1. Экспарт:
  • апрацоўшчык экспартуецца як GET і POST для падтрымкі запытаў HTTP GET і POST.

Зараз давайце запусцім наш сервер і праверым яго функцыянальнасць. Спачатку запусціце сервер распрацоўкі, запусціўшы yarn dev. Затым адкрыйце браўзер і наведайце localhost:3000, каб убачыць прыкладанне ў дзеянні.

Каб праверыць функцыянальнасць аўтэнтыфікацыі, наведайце localhost:3000/api/auth/signin. Тут вы адчуеце магію NextAuthJS. Прадстаўлены шаблон, які ўваходзіць у NextAuthJS, дазваляе беспарольны ўваход у сістэму. Каб паспрабаваць, увядзіце сапраўдны адрас электроннай пошты.

Passwordless Signin Input

Пасля адпраўкі электроннага ліста NextAuthJS апрацуе закулісны працэс. Па-першае, ён створыць і адправіць ліст з унікальнай спасылкай для ўваходу на ўказаны адрас электроннай пошты. Гэтая спасылка служыць бяспечным маркерам аўтэнтыфікацыі для карыстальніка. Затым, калі карыстальнік націскае на спасылку, NextAuthJS праверыць токен і аўтэнтыфікуе карыстальніка.

Signin Email

Гэтая функцыя беспарольнага ўваходу павышае бяспеку і карыстацкі досвед, ухіляючы неабходнасць пароляў. Карыстальнікі могуць хутка і бяспечна атрымаць доступ да сваіх уліковых запісаў, проста націснуўшы на спасылку, атрыманую па электроннай пошце. Гэта спрашчае працэс ўваходу ў сістэму і зніжае рызыку ўразлівасці, звязанай з паролем.

Калі карыстальнік націскае на электронную пошту для ўваходу, згенераваную NextAuthJS, і праходзіць аўтэнтыфікацыю, некалькі дзеянняў адбываюцца за кулісамі, каб спрыяць бесперашкоднаму ўваходу.

1. Праверка спасылкі па электроннай пошце: калі карыстальнік націскае на спасылку для ўваходу, NextAuthJS правярае маркер аўтэнтыфікацыі, убудаваны ў спасылку. Гэты маркер забяспечвае бяспеку і цэласнасць працэсу аўтэнтыфікацыі.

2. Працэс аўтэнтыфікацыі: пасля паспяховай праверкі токена NextAuthJS ідэнтыфікуе карыстальніка і завяршае працэс аўтэнтыфікацыі. Ён правярае асобу карыстальніка на аснове прадастаўленага токена і любых наладжаных дадатковых фактараў аўтэнтыфікацыі, такіх як шматфактарная аўтэнтыфікацыя.

3. Стварэнне сеанса: пасля паспяховай аўтэнтыфікацыі NextAuthJS стварае сеанс для карыстальніка. Сеанс - гэта пастаянны стан, які адлюстроўвае статус аўтэнтыфікацыі карыстальніка і дазваляе яму атрымліваць доступ да абароненых рэсурсаў без неабходнасці паўторнай аўтэнтыфікацыі для наступных запытаў.

4. Файлы cookie: NextAuthJS усталёўвае бяспечныя файлы cookie толькі HTTP ў браўзеры карыстальніка для кіравання сеансам. Гэтыя файлы cookie гуляюць важную ролю ў падтрыманні стану аўтэнтыфікацыі карыстальніка пры шматлікіх запытах. У залежнасці ад канфігурацыі аўтэнтыфікацыі файлы cookie звычайна ўключаюць сеансавы файл cookie і дадаткова файл cookie маркера абнаўлення.

Cookies Set By NextAuthJS

  1. Session Cookie: сеансавы cookie змяшчае ідэнтыфікатар сеансу (напрыклад, выпадкова згенераваны радок), які адназначна вызначае сеанс карыстальніка. Гэта дапамагае NextAuthJS звязваць наступныя запыты з правільным сеансам і карыстальнікам.

  2. CSRF Token Cookie: NextAuthJS усталёўвае CSRF (Cross-Site Request Forgery) маркер cookie для абароны ад атак CSRF. Токен CSRF - гэта ўнікальнае значэнне, якое ствараецца NextAuthJS і захоўваецца ў файле cookie. Ён выкарыстоўваецца для пацверджання і праверкі сапраўднасці наступных запытаў, зробленых карыстальнікам. Калі карыстальнік адпраўляе формы або выконвае канфідэнцыяльныя дзеянні, токен CSRF уключаецца ў загалоўкі або цела запыту, каб гарантаваць, што запыт паходзіць з сеанса аўтэнтыфікаванага карыстальніка, а не са шкоднаснай крыніцы.

  3. Callback URL Cookie: NextAuthJS усталёўвае файл cookie зваротнага выкліку URL для захавання арыгінальнага URL, да якога карыстальнік спрабаваў атрымаць доступ перад тым, як быць перанакіраваны ў паток аўтэнтыфікацыі. Гэты файл cookie дапамагае NextAuthJS перанакіраваць карыстальніка назад на патрэбную старонку пасля паспяховай аўтэнтыфікацыі. Гэта забяспечвае бесперабойнае карыстанне, бесперашкодна вяртаючы карыстальніка да патрэбнага месца прызначэння замест звычайнай мэтавай старонкі.

Выкарыстоўваючы бяспечныя файлы cookie толькі HTTP, NextAuthJS гарантуе, што стан аўтэнтыфікацыі застаецца бяспечным і абароненым ад несанкцыянаванага доступу. Файлы cookie зашыфраваны, што прадухіляе несанкцыянаваны доступ або змяненне з боку зламыснікаў.

Выдатная праца па паспяховай інтэграцыі NextAuthJS з адаптарам Prisma у ваша прыкладанне Next.js! Дзякуючы лёгкасці і адаптыўнасці, якія забяспечвае NextAuthJS, цяпер у вас ёсць надзейная сістэма аўтэнтыфікацыі.

Праверце рэпазітар GitHub па спасылцы ніжэй, каб знайсці код, які выкарыстоўваецца ў гэтым кіраўніцтве: https://github.com/codelabsacademy/next-auth-guide.

Але навошта тут спыняцца? Калі вы захапляецеся вэб-распрацоўкай і жадаеце палепшыць свае навыкі, падумайце аб тым, каб падаць заяўку на наш навучальны лагер па вэб-распрацоўцы. Наш навучальны лагер прапануе комплекснае навучанне, узброіўшы вас ведамі і практычнымі навыкамі, неабходнымі для поспеху ў дынамічным свеце вэб-распрацоўкі.

Далучыўшыся да нашага навучальнага лагера, вы атрымаеце практычны вопыт працы з перадавымі тэхналогіямі, папрацуеце над рэальнымі праектамі і атрымаеце індывідуальныя рэкамендацыі ад экспертаў галіны. Незалежна ад таго, з'яўляецеся вы пачаткоўцам або дасведчаным распрацоўшчыкам, наша праграма створана для таго, каб падняць вашы навыкі вэб-распрацоўкі на новы ўзровень.

Не выпусціце гэтую магчымасць паскорыць свой шлях вэб-распрацоўкі. Падайце заяўку на ўдзел у нашым навучальным лагеры вэб-распрацоўкі сёння і раскрыйце ўвесь свой патэнцыял у захапляльнай галіне вэб-распрацоўкі. Давайце разам ствараць дзіўны лічбавы вопыт і фармаваць будучыню Інтэрнэту.


Career Services background pattern

Кар'ерныя паслугі

Contact Section background image

Давайце заставацца на сувязі

Code Labs Academy © 2024 Усе правы абароненыя.