CMS 1C-Bitrix k spokojnosti svojich zákazníkov ponúka štyri systémové komponenty pre implementáciu funkcionality autorizácie, zmenu hesiel a registráciu bežných back-office systémov (system.auth.*), ako aj oficiálnu dokumentáciu cikh.

V tomto článku sa dozviete o výmene niekoľkých rôznych komponentov, aby ste ich mohli sami analyzovať, ako aj dozvedieť sa o nich viac a možno aj urobiť prieskum tých, pre ktoré neexistuje žiadna dokumentácia.

Princíp robota
Pre autorizáciu a registráciu sa na autorizáciu a registráciu používajú staré komponenty 1.0.
Môžete to urobiť zaškrtnutím políčka „Victory Components 2.0 pre autorizáciu a registráciu“ v nastaveniach modulu hlavy alebo jedným zadaním kódu:

COption::SetOptionString("main", "auth_comp2", "Y");
Po prečítaní popisu poradia stránky si všimneme, že vo verzii 1.13 (ešte pred zobrazením header.php zo šablóny stránky) sú overené prístupové práva úrovne 1 a ak neprejde, zobrazí sa autorizačný formulár .
Poďme sa na túto správu pozrieť bližšie.
Po kliknutí na registračný formulár sa Vám zobrazí nasledovné:
- poradie rozloženia stránky bude pokračovať bez zmien až po bod 3 “Side Body”, vrátane rozloženia stránky header.php,

- namiesto „Telo strany“ je pripojený jeden zo systémových komponentov system.auth.* (konkrétne system.auth.authorize, pretože $_REQUEST je prázdny), do ktorého sa prenášajú špeciálne parametre (za nižšiu cenu),
- poradie rozloženia stránky bude pokračovať bez zmien, vrátane rozloženia footer.php.
To vám umožňuje implementovať vlastný dizajn (šablónu) pre komponent system.auth.authorize, ktorý organicky zapadá do šablóny webovej stránky medzi hlavičku a pätu.

Práva na čítanie súborov a sekcií pre rôzne skupiny používateľov sa vytvárajú pri úprave administračného panela v service files.access.php.

Opis súboru popisuje úrovne prístupu k súborom a adresárom, ktoré sa nachádzajú na jednom z nich. Pre každý adresár vo verejnej časti stránky je možné vytvoriť súbor .access.php a takýto súbor doplní pravidlá prístupu pre všetky adresáre. Príklad tohto súboru v koreňovom adresári lokality:

Toto rozdelenie práv vám umožňuje doslova „na mieste“ požiadať používateľa o prihlasovacie meno a heslo používateľa, ak prejdete bez aktívneho oprávnenia do adresára, ktorého funkčnosť vyžaduje autorizáciu.
Je to často preto, lebo korešpondent posiela vybranú správu nie na koreňovú stránku, ale do konkrétnej sekcie, kde dostane najviac peňazí.

">


Výsledkom je, že používateľ zadá prihlasovacie meno a heslo bez toho, aby opustil celú stránku, ktorá sa odošle na jeho URL, namiesto stránky spracuje systémový komponent odstránenie dát a odčerpanie, prípadne autorizuje a opätovne autorizuje stránky nku.

Koristuvach spokojnosti, na to, aby ste prešli, nemusíte tvrdo pracovať

požadovaný úsek
.
Šťastný programátor, nemusíte myslieť na presmerovania /auth/ a $backurl.
Globálnu konštantu NEED_AUTH odporúčam používať len v špecifických prípadoch, jedným z nich je autorizačná stránka v štandardnom doručení na demo stránku na /auth/index.php:
SetTitle(GetMessage("AUTH_TITLE"));
Tento prístup umožňuje používateľom aktualizovať heslo alebo zaregistrovať účet bez opustenia celého účtu.

Môžete manipulovať s dostupným súborom týchto správ vo svojich šablónach systémových komponentov, ale nemôžete blokovať ich kliknutia pri prechode na tieto správy, a to je veľké mínus.

Vikoristannaya komponent autorizácie v strede tela stránky Niekedy je potrebné umiestniť autorizačný formulár namiesto tela stránky a do stredu tela stránky, napríklad za adresu /about/index.php v strede obsahu. Tu som na vine ja
nuansy: zdá sa, že systémový komponent system.auth.authorize nerobí nič pre priamu autorizáciu, a preto nevie nič o výsledku autorizácie.Ak teda pripojíme komponent bez parametrov, zaistí sa správna autorizácia používateľov a problémy s autorizáciou sa nezobrazia. ...
V skutočnosti je autorizačný mechanizmus zabudovaný hlboko v jadre jadra, po ktorom jadro pripojí komponent a odovzdá hodnotu $APPLICATION->arAuthResult jeho parametru „AUTH_RESULT“, ktorý opatrne opakujeme na našich stránkach:
SetTitle("O stránke");

? > ...

IsAuthorized()): ?><шаблон_сайта>/components/bitrix/system.auth.*/.default) a čo s nimi potom robiť.

Nemôžete zmeniť názvy polí, ktoré sa prenášajú v týchto formulároch, ale môžete do registrácie pridať ďalšie polia, napríklad „telefón“, hoci v tomto štádiu systémový komponent nerozumie, čo chcete s týmito novými poliami.

Môžete tiež úplne zmeniť dizajn a upraviť zobrazenie komponentov vášho systému.
Pri spracovaní týchto šablón použite globálnu funkciu ShowMessage, ktorá berie ako vstup riadok alebo pole.
Môžete použiť túto wiki, alebo ešte lepšie, prehodnotiť šablónu komponentu system.show_message.
class CWBroker ( // ... verejná statická funkcia OnBeforeUserRegister(&$arArgs) ( globálna $APPLICATION; $_REQUEST["USER_PERSONAL_PHONE"] = preg_replace("#[^0-9]#", "", $_REQUEST[" USER_PERSONAL_PHONE"]); $arArgs["LOGIN"] = $arArgs["EMAIL"]; $arArgs["CONFIRM_PASSWORD"] = $arArgs["PASSWORD"]; $arArgs["PERSONAL_PHONE"] = $_REQUEST["USER_PERSONAL_PH "]; $arArgs["PERSONAL_STATE"] = $_REQUEST["USER_PERSONAL_STATE"]; if (empty($arArgs["NAME"])) ( $APPLICATION->ThrowException("Názov nie je zadaný"); return false ; ) if (empty($arArgs["LAST_NAME"])) ( $APPLICATION->ThrowException("Name nie je zadané"); return false; ) if (empty($arArgs["PERSONAL_PHONE"])) ( $APPLICATION- >ThrowException ("Mobilný telefón nie je zadaný" return false ) if (empty($arArgs["PERSONAL_STATE"])) ( $APPLICATION->ThrowException("Region not specific"); return false; ) if ($_REQUEST ["); USER_AGREE_TERMS"]<>"Y" ||<>$_REQUEST["USER_AGREE_PHONE"]<>"Y" ||
$_REQUEST["USER_AGREE_EMAIL"]

"Y") ( $APPLICATION->ThrowException("Všetky práva musia byť prijaté"); return false; ) return $arArgs;
class CWBroker ( // ... verejná statická funkcia OnAfterUserAdd(&$arFields) ( if (CModule::IncludeModule("dotazy")) ( $CUser = new CUser(); $CUser->Update($arFields["ID "], array("UF_TARIFF" => 1)); ) if (CModule::IncludeModule("predaj")) ( $sale_account = CSaleUserAccount::GetByUserID($arFields["ID"], "RUB"); ak (empty($sale_account)) ( CSaleUserAccount::Add(array("USER_ID" => $arFields["ID"], "CURRENT_BUDGET" => 0, "CURRENCY" => "RUB")); ) ) ak (CModule::IncludeModule("subscribe")) ( $CDBResult = CRubric::GetList(array("SORT" => "ASC"), array("ACTIVE" => "Y")); $rubrics = array( ) while ($rubric = $CDBResult->Fetch()) ( $rubrics = $rubric["ID"]; ) $CSubscription = new CSsubscription($CSubscription->Add(array("USER_ID" => $ arFields). ["ID"], "EMAIL" => $arFields["EMAIL"], "FORMAT" => "html", "CONFIRMED" => "Y", "SEND_CONFIRM" => "N", "RUB_ID" = > $rubriky,)); ) ) // ... )

Alternatívy

Ak ste dosť odvážni na to, aby ste sa dostali do výstupného kódu komponentov systému (autorizácia), potom sa vám s nimi bude ťažko pracovať.
Ako samozrejmú alternatívu môžeme najskôr uvažovať o vytvorení mocenských komponentov autorizácie, registrácie a pod.
Našťastie vám API umožňuje implementovať všetky rovnaké.
Táto alternatíva má však tieto vážne nevýhody:

- výdavky na opätovnú implementáciu logiky (len v jednej zložke autorizácie: invertovaná captcha, bezpečná autorizácia kľúčom a autorizácia prostredníctvom externých služieb),
- aktualizácia systémových komponentov, čo je obzvlášť dôležité pri prebiehajúcom prechode jadra na D7,
- nemožnosť pripojenia autorizačného komponentu na celú stránku klienta, ak nemáte dostatočné práva na zobrazenie stránky, musíte implementovať vlastnú logiku dostupnosti týchto a iných stránok a sekcií.

Ďalšou alternatívou je použitie komponentu bitrix:main.register, ktorý má široké spektrum parametrov.

Nie je žiadnym tajomstvom, že platforma Bitrix má ďaleko od ideálu. Teraz, keď počúvam podobné reči, ktoré propagujú moju pokerovú tvár, okamžite to volámúžasné Potom sa pokúsim vrátiť a pochopiť prečo sa to tak rozpadlo? a vo väčšine prípadov nájdem príjemné

Potvrdenie.


Ale neviem, o aký druh ide, tak som sa rozhodol zapísať všetky straty. Som zvedavý, kto to bude potrebovať. Nevikorizujte svoje prihlásenie na vašu e-mailovú adresu! Správne prihlasovacie meno, ktoré sa číta, musí byť naformátované ad hoc spôsobom a môže obsahovať iba príslovkové znaky: pri vytváraní prihlasovacieho mena sa môžu upraviť niektoré znaky latinskej (anglickej) abecedy (od A po Z - rovnako ako skvelé) , čísla 0..9 a tiež znaky spojovník ("-") a spojovník ("_") - to je všetko! Žiadne iné znaky (vrátane medzier) nemôžu zdieľať rovnaký osud s vaším prihlásením! Rešpekt! Registráciou na stránke www.site/ (online magazín RuAvtor) a kliknutím na tlačidlo „Nahrať“ dávate súhlas so spracovaním vašich osobných údajov v súlade s federálnym zákonom „O osobných údajoch“ č. 152-FZ zo dňa 27. júna 2006 a zároveň potvrdzujete, že ste s ním oboznámení pravidlá projekt a Vidmova v záruke a opatrne ich akceptujte a tiež mierte nižšie Vidmova v záruke Prosím koristuvach o spracovaní osobných údajov.

Registráciou na stránke www.site/ (online magazín RuAvtor) a kliknutím na tlačidlo „Nahrať“ dávate súhlas so spracovaním vašich osobných údajov v súlade s federálnym zákonom „O osobných údajoch“ č. 152-FZ zo dňa 27. júna 2006 a zároveň potvrdzujete, že ste s ním oboznámení

V inom prípade (v prípade vášho nešťastia, v určitom okamihu


pravidlá


alebo inak


Vidmova v zárukách


Prenos osobných údajov


Osobné údaje manželov Koristuvachových Správa internetového magazínu RuAuthor neprenáša tretím stranám, na základe čoho sú osobné údaje manželov Koristuvachových poskytnuté za účelom získania ceny, ako aj príslušným orgánom ( Prokuratúra, polícia, súdy a iné) rozšírením noriem úradnej legislatívy RF.

Laravel vám umožňuje vytvárať autentifikáciu aj pri nečinnosti.

V skutočnosti je všetko pripravené ešte predtým, ako vyjde z krabice.

Nastavenia autentifikácie sa nachádzajú v súbore config/auth.php, ktorý obsahuje množstvo zdokumentovaných možností na prispôsobenie mechanizmu autentifikácie.

Nastavenie databáz

Za inšpiráciou Laravel je model App\User Eloquent v katalógu aplikácií.

Tento model je možné použiť súčasne s autentifikačným ovládačom založeným na Eloquent.

Ak program nie je založený na Eloquent, môžete použiť ovládač autentifikácie databázy, ktorý je založený na Laravel Query Builder.

Pri vytváraní databázovej schémy pre App\User sa uistite, že pole hesla má minimálnu dĺžku 60 znakov.

Musíte tiež zmeniť nastavenia tak, aby tabuľka používateľov (alebo jej ekvivalent) nahradila pole s nulovou hodnotou pamätového_tokenu riadka s dĺžkou až 100 znakov.

Toto pole sa používa na uloženie tokenu relácie, ak váš program poskytuje funkciu "zapamätať si ma".

Vytvorte nasledujúce pole: $table->rememberToken();

v migrácii. !}
Rýchly štart
Nachádzajú sa v priestore názvov App\Http\Controllers\Auth.
AuthController sa stará o registráciu a autentifikáciu klientov a PasswordController obsahuje logiku pre resetovanie hesiel klientov.

Pri mnohých programoch nemusíte tieto ovládače upravovať.

v migrácii. !}
Smerovanie
Rýchly štart
Nachádzajú sa v priestore názvov App\Http\Controllers\Auth.
Zobrazenia

Vinník je v adresári resources/views/auth.

Teraz, ak máte trasy a šablóny, môžete zaregistrovať a overiť hostiteľov svojich programov.

Kontroléry autentifikácie teraz umiestnia logiku (prostredníctvom tretích strán) na overenie existujúcich účtov a vytvorenie nových vo vašej databáze.

Ak je overenie úspešné, používateľ prejde na /domovskú stránku, kde sa vytvorí trasa.

Cestu presmerovania môžete po overení zmeniť pomocou funkcie redirectTo power AuthController:

Dodatková upravila

Ak chcete zmeniť polia formulára, ktoré je potrebné vyplniť pri registrácii účtov, alebo zmeniť spôsob vytvárania účtov v databáze, môžete upraviť triedu AuthController.

Táto trieda je zodpovedná za overovanie a vytváranie vašich nových programov.

Metóda validátora v triede AuthController nastavuje pravidlá overovania registračného formulára pre nové účty.

Môžete to zmeniť, ako chcete.

Metóda create triedy AuthController je zodpovedná za vytváranie nových záznamov App\User vo vašej databáze pomocou Eloquent ORM.

Môžete ho tiež zmeniť podľa vášho programu.

Obnovenie overeného účtu

Môžete si vybrať overeného zákazníka za Auth fasádou:

$user = Auth::user();

Môžete tiež získať ďalšiu inštanciu Illuminate\Http\Request:

user()) ( // $request->user() rotuje inštanciu overeného klienta) ) )

Kontrola autentifikácie klienta s programom

Ak chcete skontrolovať, či je tokový server overený vašou aplikáciou, môžete použiť metódu kontroly na fasáde overenia, ktorá sa zmení na pravdivú, keď sa použije kontrola overenia:

If (Auth::check()) ( // Overenie Koristuvach )

Môžete však použiť aj middleware na overenie autentifikácie klienta pred prístupom k špecifickým trasám/kontrolérom.

Metóda pokus berie ako prvý argument pole párov kľúč – hodnota.

Hodnoty v tomto poli budú vyhľadané v databáze.

V tomto prípade teda korešpondent hľadá pole e-mailu.

Po nájdení hesla sa hash hesla z databázy porovná s hashom zadaného hesla v poli.

Po uložení hashov sa pre používateľa spustí overovacia relácia.

Metóda pokusu vráti hodnotu true, ak bola autentifikácia úspešná.

V opačnom prípade - falošné.

Zamýšľanou metódou presmerovača je presunúť klienta na adresu URL, ktorú chcete použiť pred dokončením autentifikácie. Náhradná adresa URL je špecifikovaná v parametri a bude vo Vikoristane, kde trasa, kam chce používateľ ísť, nie je dostupná.

Ak chcete, môžete k e-mailu a heslu pridať aj ďalšie overenie.

Môžete si napríklad overiť, že ste aktívnymi koristuvachmi:

If (Auth::attempt(["email" => $email, "password" => $password, "active" => 1])) ( // Používateľ je aktívny a platí správne heslo )

Na odhlásenie z programu môžete použiť metódu odhlásenia z Auth fasády.

Ak chcete vymazať overovacie informácie z relácie vášho účtu:

Auth::logout();

Obnoviť rešpekt:

Ak potrebujete autentifikovať konkrétneho používateľa pomocou vášho programu, môžete zavolať metódu prihlásenia na inštancii tohto používateľa.

Táto inštancia je zodpovedná za implementáciu zmluvy Illuminate\Contracts\Auth\Authenticatable.

Model App\User, ktorým je Laravel inšpirovaný, už implementuje toto rozhranie:

Auth::login($user);

Overenie pre ID zákazníka

Na autentifikáciu používateľa pre jeho ID môžete použiť metódu loginUsingId.

Táto metóda berie ako argument Koristuvach ID:

Auth::loginUsingId(1);

Autentifikácia zákazníka na jednu požiadavku

Môžete tiež použiť metódu raz na overenie používateľa pre jednu požiadavku.

Nevytvoria sa žiadne relácie ani súbory cookie, ktoré možno použiť na vytvorenie bezstavového API.

Jednorazová metóda sa riadi rovnakým princípom ako pokus:

V skutočnosti je všetko pripravené ešte predtým, ako vyjde z krabice.

If (Auth::once($credentials)) ( // )

Základná autentifikácia HTTP

Bezstavová základná autentifikácia HTTP

Základnú autentifikáciu HTTP môžete použiť aj bez inštalácie súboru cookie na identifikáciu používateľa v relácii, čo môže byť problematické, ak sa vytvorí autentifikačné rozhranie API.

Na vytvorenie sprostredkovateľa použite metódu OnceBasic.

Pri vytváraní databázovej schémy pre App\User sa uistite, že pole hesla má minimálnu dĺžku 60 znakov.

Ak OnceBasic nič neobráti, pred programom sa umyje.

Obnovenie hesla Väčšina webových programov ponúka možnosť obnoviť heslo. Aby ste sa uistili, že tento krok za krokom nemusíte implementovať, Laravel poskytuje jednoduchý spôsob spravovania hádačov hesiel a resetovania hesla. Väčšina webových programov ponúka možnosť obnoviť heslo. Najprv zmeňte to, čo váš model App\User implementuje zmluvu Illuminate\Contracts\Auth\CanResetPassword. Väčšina webových programov ponúka možnosť obnoviť heslo. Najlepší spôsob, ako to urobiť, je použiť vlastnosť Illuminate\Auth\Passwords\CanResetPassword, ktorá poskytuje potrebné metódy na obnovenie hesla. Väčšina webových programov ponúka možnosť obnoviť heslo.");

Musíte tiež zmeniť nastavenia tak, aby tabuľka používateľov (alebo jej ekvivalent) nahradila pole s nulovou hodnotou pamätového_tokenu riadka s dĺžkou až 100 znakov.

Okrem priradenia trás k PasswordController musíte vytvoriť šablóny, ktoré zobrazí váš kontrolér.

Nebojte sa, mierte nižšie na zadky takýchto šablón.

Môžete si ich upraviť podľa svojich potrieb.

v migrácii. !}
Rýchly štart

Musíte vytvoriť šablónu formulára HTML so žiadosťou o obnovenie hesla.

Táto šablóna sa nachádza na adrese resources/views/auth/password.blade.php.

Formulár obsahuje jedno pole e-mailovej adresy, ktoré vám umožňuje požiadať o obnovenie hesla:

Odoslať odkaz na obnovenie hesla

v migrácii. !}

Táto šablóna odstráni hodnotu $token, aby nahradila token na obnovenie hesla používateľa, ktorý o to požiadal.

Príklad tejto šablóny:

Kliknite sem, ak chcete obnoviť svoje heslo: (( url("password/reset/.$token) ))

Formulár na obnovenie hesla

Zamýšľanou metódou presmerovača je presunúť klienta na adresu URL, ktorú chcete použiť pred dokončením autentifikácie. Príklad formulára na obnovenie hesla:

(($token))

Obnoviť heslo

Čo robiť po obnovení hesla

Keď určíte trasy a šablóny na obnovenie hesiel, môžete ich skontrolovať vo svojom prehliadači.

Trieda PasswordController je súčasťou rámca a obsahuje všetku potrebnú logiku na načítanie hárkov a uloženie hesiel do databázy.

Keď sa vzdáte svojho hesla, používateľ sa automaticky overí vo vašej aplikácii a upraví ju na /domovskú stránku.

Tento spôsob môžete zmeniť vytvorením presmerovania na napájanie v PasswordController

Chránené $redirectTo = "/dashboard";

"Socialite" => Laravel\Socialite\Fasády\Socialite::trieda,

Ďalej musíte zadať parametre pre službu OAuth, ktorú používate.

To možno nájsť v súbore config/services.php.

Nasledujúce služby sú stále dostupné: facebook, twitter, google a github.

zadok:

"github" => [ "client_id" => "id-vašej-github-app-id", "client_secret" => "your-github-app-secret", "redirect" => "http://your-callback- url", ],

Základná Wikoristannya

Teraz ste pripravení overiť svojich klientov!

Zistite podrobnosti o koristuvach

Budete musieť vytvoriť dve trasy: jednu na úpravu klienta k poskytovateľovi OAuth a druhú na úpravu spätného volania poskytovateľovi po overení.

Prístup k Socialite je možný cez nasledujúcu fasádu Socialite:

presmerovanie ();

) /** * Získajte informácie o používateľovi z GitHub.

* * @return Response */ public function handleProviderCallback() ( $user = Socialite::driver("github")->user(); // $user->token; ) )

Metóda presmerovania má poslať klienta poskytovateľovi OAuth a používateľská metóda prečíta správu, ktorá príde a získa informácie o klientovi od poskytovateľa.

Pred úpravou môžete okrem metódy rozsahu zadať aj „rozsahy“ (prístupové práva).

Poďme sa čudovať zmluve Illuminate\Contracts\Auth\UserProvider:

Metóda retrieveById sa používa na získanie údajov z databázy pre ID.

Implementácia triedy Authenticatable sa môže zmeniť na rovnakú metódu.

Metóda retrieveByToken získa ID užívateľa a token „zapamätaj si ma“, ktorý je uložený v poli Remember_token.

Ako v predchádzajúcej metóde, implementácia môže byť zmenená na triedu Authenticatable. Metóda updateRememberToken aktualizuje token klienta.

Nový token môže byť vytvorený znova, keď je zákazník autentifikovaný, alebo null – keď sa zákazník odhlási.

Metóda retrieveByCredentials načíta pole údajov špecifikovaných v metóde Auth::attempt počas dodatočnej autentifikácie.

Táto metóda je spôsobená šukati koristuvacha za uvedenými údajmi z úbytku údajov.

Vyhľadajte pole používateľského mena.