Begrænset webadgang (optegnelser) foretaget med Ruby on Rails

Indholdsfortegnelse

I webapplikationer, hvor vi har private zoner, som kun registrerede medlemmer skal have adgang til, skal vi implementere mekanismer, der giver brugerne mulighed for kun at se, når de er godkendt.
Det filtre De er redskaber til Skinner der giver os mulighed for at opfange opkald til metoder og handlinger, så vi kan tilføje vores metoder enten før, under eller efter, så vi kan styre applikationens flow, som vi finder passende for at opfylde vores funktionaliteter. På dette tidspunkt vil vi bruge før filter for at opfange opkaldene til vores handlinger, på denne måde kan vi verificere sessionen og vide, om brugeren er logget ind, hvis ikke så omdirigerer vi dem til det sted, hvor vi har arrangeret. Vi vil placere denne metode i vores applikationskontroller, da den er basen, og på denne måde vil den være tilgængelig for hele applikationen.
Lad os se den kode, vi har til det:
 def autoriser medmindre session [: user_id] flash [: notice] = "Log venligst" redirect_to (: controller => "login" ,: action => "login") slut ende 

Da vi ser logikken bag dette er ganske enkel, bruger vi Rubys egen betingede som er med mindre, dette giver os mulighed for at betingelse af, at medmindre betingelsen er opfyldt, blokeres koden. Så medmindre vi har et id for en bruger i session, vil vi omdirigere ham og bede ham om at godkende i applikationen.
Nu i vores administrator controller vil vi filtrere og bede brugerne om at godkende:
 klasse AdminController <ApplicationController før_filter: autoriser 

Og i vores login -controller gør vi også noget lignende, kun vi tilføjer undtagelsen til login -handlingen, som er den, vi er interesseret i, som kan ses af enhver uautentificeret bruger:
 klasse LoginController: login 

Hvis vi ikke er logget ind, bør vi se noget lignende når vi åbner applikationens administrative side:

Nu har vi måden at anvende og filtrere, at brugere ikke kan se de administrative paneler, hvis de ikke er logget ind, men vi har en sidste inkonsekvens, for at eliminere brugere skal vi undgå at slette den generelle administrator af applikationen, da hvis vi gør det ikke gør det, er der en mulighed for, at en bruger sletter alle brugerne, og vi forbliver uden adgang, medmindre vi direkte ændrer databasen, og det er noget uacceptabelt for vores applikation. Til dette vil vi oprette en særlig begivenhed igen, i dette tilfælde vil det være før_ødelæggelse, hvad gør det, før handlingen udføres ødelægge køre en metode.
Lad os se koden:
 before_destroy: dont_destroy_dave def dont_destroy_dave raise "Can not destroy dave" if self.name == 'dave' end 

Så i vores slettehandling fanger vi meddelelsen og viser den, lad os se handlingskoden:
 def delete_user id = params [: id] if id && user = User.find (id) begin user.destroy flash [: notice] = "User # {user.name} deleted" rescue flash [: notice] = "Can ' t slette den bruger "end end redirect_to (: action =>: list_users) end 

Med dette afslutter vi vores tutorial om begrænsning af adgangen til vores applikation, det er vigtigt at dække alle mulighederne for at forhindre uautoriserede brugere i at se eller ændre vores administrative del, dette for at undgå fremtidige hovedpine og sikkerhedsproblemer, der vil gøre vores applikation utryg og ustabil.Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt
wave wave wave wave wave