Turinys
The filtrus Jie yra įrankiai Bėgiai kurie leidžia mums perimti skambučius į metodus ir veiksmus, leidžiantys pridėti savo metodus prieš, per arba po to, kad galėtume kontroliuoti programos srautą, kaip mums atrodo tinkama, kad galėtume atlikti savo funkcijas. Šiame etape mes ketiname naudoti prieš filtrą norėdami perimti skambučius į mūsų veiksmus, tokiu būdu galime patikrinti seansą ir žinoti, ar vartotojas yra prisijungęs, jei ne, tada nukreipiame juos į bet kurią vietą. Šį metodą įdėsime į savo programų valdiklį, nes jis yra pagrindas ir tokiu būdu jis bus prieinamas visai programai.
Pažiūrėkime, kokį kodą turime:
def autorizuoti, nebent seansas [: vartotojo_id] „flash“ [: pranešimas] = "Prašome prisijungti" redirect_to (: controller => "login" ,: action => "login") pabaiga
Kadangi matome, kad logika yra gana paprasta, mes naudojame pačios Ruby sąlygą, kuri yra nebent, tai leidžia mums nustatyti, kad nebent įvykdyta sąlyga, bloko kodas yra vykdomas. Taigi, jei sesijoje neturime vartotojo ID, mes jį peradresuosime ir paprašysime autentifikuoti programoje.
Dabar savo administratoriaus valdiklyje mes filtruosime ir paprašysime naudotojų autentifikuoti:
klasė AdminController <ApplicationController before_filter: autorizuoti
Savo prisijungimo valdiklyje mes taip pat darome kažką panašaus, tik pridėsime dominančio prisijungimo veiksmo išimtį, kurią gali pamatyti bet kuris nepatvirtintas vartotojas:
klasės „LoginController“: prisijungimas
Jei nesame prisijungę, turėtume pamatyti kažką panašaus, kai einame į programos administravimo puslapį:
Pažiūrėkime kodą:
before_destroy: dont_destroy_dave def dont_destroy_dave pakelti „Negaliu sunaikinti dave“, jei self.name == 'dave' end
Tada atlikdami ištrynimo veiksmą mes užfiksuosime pranešimą ir parodysime jį, pažiūrėkime veiksmo kodą:
def delete_user id = params [: id] if id && user = User.find (id) begin user.destroy flash [: pranešimas] = "Vartotojo numeris {naudotojo vardas} ištrintas" gelbėjimo blykstė [: pranešimas] = "Gali" t ištrinti tą vartotojo "end end redirect_to (: action =>: list_users) end
Baigę mūsų mokymo programą, kaip apriboti prieigą prie mūsų programos, svarbu išnaudoti visas galimybes, kad neleistini vartotojai nematytų ar nekeistų mūsų administracinės dalies, taip išvengdami galvos skausmo ir saugumo problemų, dėl kurių mūsų programa bus nesaugi ir nestabili.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką