logo

Լրացուցիչ Բլոկների Տեսակներ (EBT) - Դասավորության Կառուցողի նոր փորձառություն❗

Լրացուցիչ Բլոկների Տեսակներ (EBT) - ձևավորված, կարգավորելի բլոկների տեսակներ՝ սլայդշոուներ, ներդիրներ, քարտեր, բացվող ցանկեր և շատ ուրիշներ։ Ներառված կարգավորումներ՝ ֆոնի, DOM տուփի, JavaScript փլագինների համար։ Փորձեք դասավորությունների կառուցման ապագան արդեն այսօր։

EBT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EBT մոդուլները

❗Լրացուցիչ Պարբերությունների Տեսակներ (EPT) - Պարբերությունների նոր փորձառություն

Լրացուցիչ պարբերության տեսակներ (EPT) - անալոգիական պարբերության վրա հիմնված մոդուլների հավաքակազմ։

EPT մոդուլների ցուցադրական տարբերակներ Ներբեռնել EPT մոդուլները

Scroll
18/05/2025, by Ivan

JSON Drop API Documentation

JSON:API-ն ամբողջությամբ հիմնված է էյնթիթիների վրա։ Սա նշանակում է, որ այն չի կարող մշակել բիզնես կանոններ կամ կատարել այնպիսի գործողություններ, որոնք հնարավոր չէ դիտարկել որպես "CRUD" (ստեղծում, ընթերցում, թարմացում, ջնջում): Բիզնես լոգիկան՝ ինչպես նոր հաշվի գրանցումը, օգտագործողի մուտքագրումը կամ գաղտնաբառի վերականգնումը, չեն ընդգրկված JSON:API-ում։ Այս գործողություններից շատերը արդեն հասանելի են Drupal core-ով։

Ստորև ներկայացված է ամենահաճախ օգտագործվող հնարավորությունների և դրանց լուծումների ոչ լրիվ ցանկը։

Հետաքրքրող ուղիներն են.

  • /session/token
  • /user/register
  • /user/login
  • /user/login_status
  • /user/logout

Սեսիայի թոքեն ստանալը

Թոքեն ստանալ

curl \
  --request GET http://drupal.d8/session/token

Թոքենը վերադարձվում է պարզ տեքստով (ոչ JSON ձևաչափով) պատասխանի մարմնում։

Թոքենների օգտագործում

Բացի սեսիայի թոքենից, մուտք գործելիս դուք ստանում եք նաև csrf_token և logout_token։ logout_token-ը պետք է օգտագործել համակարգից դուրս գալու համար (տե՛ս ստորև): csrf_token-ը կամ session token-ը անհրաժեշտ են փոփոխելի հարցումների համար (օրինակ՝ POST, PATCH և DELETE):

Օգտագործողի գրանցում

Մինչև JSON:API-ն core-ով նոր օգտագործողների գրանցումը չի ապահովում, կարող եք տեղադրել JSON:API User Resources մոդուլը՝ օգտագործողի հետ կապված JSON:API վերջնակետեր ավելացնելու, այդ թվում՝ գրանցման, գաղտնաբառի վերականգնման և փոփոխման համար։

Այլընտրանքորեն, կարող եք օգտագործել core REST մոդուլը։ REST-ի միջոցով գրանցումը ակտիվացնելու համար անհրաժեշտ է միացնել user_registration REST ռեսուրսը (տե՛ս REST UI-ի օրինակը ներքևում):

curl \
--header "Content-Type: application/json" \
--header "X-CSRF-Token: 57sTS-KS7UoYAWAPyzt0iJmo300CFct3jdKyWM-UiiQ" \
--request POST "https://drupal.d9/user/register?_format=json" \
--data '{"name": {"value": "thename123"}, "pass": {"value": "thepass"}, "mail": {"value": "someone@example.com"}}'

Օգտագործեք session token-ը X-CSRF-Token վերնագրում։ Հաջող գրանցումից հետո պատասխանում կստանաք օգտագործողի որոշ դաշտեր, ներառյալ նոր ստեղծված օգտագործողի UUID-ը.

{
   "uuid" : [ { "value" : "3e75b757-831e-4bf7-bbb6-25b8c50c7ac0" } ]
}

Նշենք նաև, որ պատասխանում չկա "Set-Cookie" վերնագիր՝ անկախ նրանից, թույլատրված է, թե ոչ այցելուների կողմից հաշվի ինքնուրույն ստեղծումը։ Այսինքն՝ եթե հաստատում կամ հաստատման պահանջ չկա, գրանցումից հետո կարող եք անմիջապես մուտք գործել նույն անունով և գաղտնաբառով։

Օգտագործողի մուտք

curl \
  --header "Content-type: application/json" \
  -c cookie.txt \
  --request POST "http://drupal.d8/user/login?_format=json" \
  --data '{"name":"admin", "pass":"admin"}'

-c cookie.txt հրամանը curl-ին ասում է պահպանել cookie։ Պատասխանը նման է լինելու հետևյալին.

{
   "csrf_token" : "57sTS-KS7UoYAWAPyzt0iJmo300CFct3jdKyWM-UiiQ",
   "logout_token" : "zzRaD8ZgLT1TkG804mYpVVTyM-pgoDm4h9XZ9JHSoCw",
   "current_user" : {
      "roles" : [
         "authenticated",
         "administrator"
      ],
      "name" : "admin",
      "uid" : "1"
   }
}

Օգտագործողի կարգավիճակ

curl \
  --header "Content-type: application/json" \
  -b cookie.txt \
  --request GET "http://drupal.d8/user/login_status?_format=json"

-b cookie.txt հրամանը curl-ին ասում է ուղարկել (ոչ թե պահպանել) cookie-ն նախորդ հարցումից։ Եթե մուտք գործած եք, պատասխանը կվերադարձնի 1 (պարզ տեքստ), հակառակ դեպքում՝ 0։

Օգտագործողի դուրս գալ

curl \
  --header "Content-type: application/json" \
  -b cookie.txt \
  --request POST "http://drupal.d8/user/logout?_format=json&token=zzRaD8ZgLT1TkG804mYpVVTyM-pgoDm4h9XZ9JHSoCw"

Այս հարցումը cookie.txt-ով նույնականացված օգտագործողին դուրս կգրի համակարգից։ Օգտագործեք logout_token արժեքը՝ token query parameter-ի մեջ։

Նույնականացման մեխանիզմներ

Վերոնշյալը նույնականացման բազմաթիվ մեխանիզմներից ընդամենը մեկն է։ Ուսումնասիրեք, թե որ մեխանիզմն է ավելի հարմար Ձեր կարիքների համար։

Կա նաև Drupal OAuth մոդուլ՝ simple_oauth։

Հղումներ

Ավելին՝ հետևյալ հղումներում՝

Նույնականացման այլ տարբերակների մասին կարող եք կարդալ այստեղ՝ օգտագործելով այլ նույնականացման պրոտոկոլներ։

Եթե ձեր front-end-ը (օր.՝ Javascript հավելված) և Drupal-ը տարբեր դոմենների վրա են, բրաուզերը կարողանա պահել session cookies միայն, եթե SameSite cookie պարամետրը դրված է "None"։ Դրա համար services.yml-ում ավելացրեք հետևյալը՝

parameters:
  session.storage.options:
    cookie_samesite: None

REST UI

REST UI մոդուլը թույլ է տալիս կարգավորել core REST մոդուլի ռեսուրսները։ Օրինակ, ինչպես ակտիվացնել օգտվողի գրանցման հնարավորությունը՝

  1. REST UI մոդուլը տեղադրելուց և միացնելուց հետո գնացեք /admin/config/services/rest էջ և միացրեք "User registration" ռեսուրսը։ Խմբագրեք ռեսուրսը, միացրեք POST մեթոդը, JSON ֆորմատը և օրինակ՝ Cookie provider-ը։ "Method"-ի granularit-ը ընտրելու դեպքում կարող եք տարբեր request մեթոդների համար տարբեր ֆորմատներ ու providers հատկացնել։
  2. Անանուն օգտագործողներին տվեք "Access POST on User registration resource" իրավունքը՝ /admin/people/permissions/module/rest էջում։
  3. Վերջապես, ստուգեք, որ այցելուները կարողանան ինքնուրույն հաշիվ ստեղծել՝ /admin/config/people/accounts էջում։

 

Հոդվածը վերցված է Drupal Documentation-ից։