Innholdsfortegnelse
I webapplikasjoner der vi har private soner som bare registrerte medlemmer skal ha tilgang til, må vi implementere mekanismer som lar brukerne bare se når de er godkjent.De filtre De er verktøy for Skinner som lar oss fange opp samtaler til metoder og handlinger, slik at vi kan legge til metodene våre enten før, under eller etter, slik at vi kan kontrollere applikasjonsflyten som vi finner passende for å oppfylle funksjonene våre. På dette stadiet skal vi bruke før filter for å fange opp samtalene til handlingene våre, på denne måten kan vi bekrefte økten og vite om brukeren er logget inn, hvis ikke så omdirigerer vi dem til hvor vi har arrangert. Vi kommer til å plassere denne metoden i vår applikasjonskontroller siden den er basen, og på denne måten vil den være tilgjengelig for hele applikasjonen.
La oss se koden vi har for den:
def autorisere med mindre økt [: user_id] flash [: notice] = "Logg deg på" redirect_to (: controller => "login" ,: action => "login") slutt slutt
Siden vi ser at logikken bak dette er ganske enkel, bruker vi Rubys egen betingede som er med mindre, dette tillater oss å betingelse at med mindre betingelsen er oppfylt, blir koden til blokken utført. Så med mindre vi har en bruker -ID i sesjonen, kommer vi til å omdirigere ham og be ham om å godkjenne i programmet.
Nå i vår administratorkontroller skal vi filtrere og be brukerne om å autentisere:
class AdminController <ApplicationController before_filter: autorize
Og i påloggingskontrolleren vår gjør vi også noe lignende, bare vi legger til unntaket av påloggingshandlingen som er den vi er interessert i som kan sees av enhver uautentisert bruker:
class LoginController: logg inn
Hvis vi ikke er logget inn, bør vi se noe slikt når vi åpner applikasjonens administrative side:
Nå har vi muligheten til å søke og filtrere at brukere ikke kan se de administrative panelene hvis de ikke er logget inn, men vi har en siste inkonsekvens, for å eliminere brukere må vi unngå å slette den generelle administratoren for programmet, siden hvis vi gjør det ikke gjør det, det er en mulighet for at en bruker sletter alle brukerne og vi forblir uten tilgang med mindre vi endrer databasen direkte og det er noe uakseptabelt for applikasjonen vår. For dette skal vi lage et spesielt arrangement igjen, i dette tilfellet vil det være før_ødeleggelse, hva gjør det før du utfører handlingen ødelegge kjøre en metode.
La oss se koden:
before_destroy: dont_destroy_dave def dont_destroy_dave hever "Can't destroy dave" if self.name == 'dave' end
Så i vår slettehandling vil vi fange meldingen og vise den, la oss 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 brukeren "end end redirect_to (: action =>: list_users) end
Med dette fullfører vi opplæringen om å begrense tilgangen til applikasjonen vår, det er viktig å dekke alle mulighetene for å forhindre at uautoriserte brukere ser eller endrer vår administrative del, dette for å unngå fremtidige hodepine og sikkerhetsproblemer som vil gjøre applikasjonen vår usikker og ustabil.Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng