Ierobežota piekļuve tīmeklim (ieraksti), izmantojot Ruby on Rails

Satura rādītājs

Tīmekļa lietojumprogrammās, kurās ir privātas zonas, kurām vajadzētu piekļūt tikai reģistrētiem dalībniekiem, mums jāievieš mehānismi, kas lietotājiem ļauj redzēt tikai pēc autentifikācijas.
filtri Tie ir instrumenti Sliedes kas ļauj pārtvert zvanus uz metodēm un darbībām, ļaujot mums pievienot savas metodes vai nu pirms, tā laikā vai pēc tam, lai mēs varētu kontrolēt lietojumprogrammas plūsmu pēc saviem ieskatiem, lai izpildītu savas funkcijas. Šajā posmā mēs izmantosim pirms filtra lai pārtvertu zvanus uz mūsu darbībām, tādā veidā mēs varam pārbaudīt sesiju un zināt, vai lietotājs ir pieteicies, ja nē, tad mēs tos novirzām uz vietu, kur esam vienojušies. Mēs ievietosim šo metodi mūsu lietojumprogrammu kontrollerī, jo tā ir bāze, un tādā veidā tā būs pieejama visai lietojumprogrammai.
Apskatīsim mums pieejamo kodu:
 def autorizēt, ja vien sesija [: user_id] flash [: paziņojums] = "Lūdzu, piesakieties" redirect_to (: controller => "login" ,: action => "login") beigas beigas 

Tā kā mēs redzam, ka loģika ir diezgan vienkārša, mēs izmantojam pašas Rubijas nosacījumu, kas ir ja vien, tas ļauj nosacīt, ka, ja vien nosacījums nav izpildīts, bloka kods tiek izpildīts. Tātad, ja vien sesijā nav lietotāja ID, mēs viņu novirzīsim un lūgsim viņam autentificēties lietojumprogrammā.
Tagad mūsu administratora kontrollerī mēs filtrēsim un lūgsim lietotājus autentificēties:
 klases AdminController <ApplicationController before_filter: autorizēt 

Un savā pieteikšanās kontrollerī mēs arī darām kaut ko līdzīgu, tikai mēs pievienosim izņēmumu no pieteikšanās darbības, kas mūs interesē un kuru var redzēt ikviens neautentificēts lietotājs:
 klases LoginController: pieteikšanās 

Ja neesam pieteicies, piekļūstot lietojumprogrammas administratīvajai lapai, mums vajadzētu redzēt kaut ko līdzīgu:

Tagad mums ir veids, kā pielietot un filtrēt, lai lietotāji nevarētu redzēt administratīvos paneļus, ja tie nav pieteikušies, tomēr mums ir pēdējā neatbilstība, lai likvidētu lietotājus, mums jāizvairās no lietojumprogrammas galvenā administratora dzēšanas, jo, ja mēs to darām nedariet to, pastāv iespēja, ka lietotājs izdzēš visus lietotājus un mēs paliekam bez piekļuves, ja vien mēs tieši nemodificējam datu bāzi un tas ir kaut kas nepieņemams mūsu lietojumprogrammai. Šim nolūkam mēs atkal izveidosim īpašu notikumu, šajā gadījumā tas būs before_destroy, ko tas dara pirms darbības veikšanas iznīcināt palaist metodi.
Apskatīsim kodu:
 before_destroy: dont_destroy_dave def dont_destroy_dave paaugstināt "Nevar iznīcināt deivu", ja self.name == 'dave' end 

Pēc tam mūsu dzēšanas darbībā mēs uzņemsim ziņojumu un parādīsim to, apskatīsim darbības kodu:
 def delete_user id = parametri [: id] if id && user = User.find (id) starts user.destroy flash [: paziņojums] = "Lietotājs # {lietotājvārds} izdzēsts" glābšanas zibspuldze [: paziņojums] = "Var" t izdzēst šo lietotāja "end end redirect_to (: action =>: list_users) beigas 

Ar to mēs pabeidzam mūsu apmācību par piekļuves ierobežošanu mūsu lietojumprogrammai, ir svarīgi aptvert visas iespējas, lai neļautu nesankcionētiem lietotājiem redzēt vai mainīt mūsu administratīvo daļu, lai izvairītos no turpmākām galvassāpēm un drošības problēmām, kas padarīs mūsu lietojumprogrammu nedrošu un nestabilu.Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu
wave wave wave wave wave