Acesso restrito à web (registros) feito com Ruby on Rails

Índice

Em aplicativos da web em que temos zonas privadas que apenas membros registrados devem acessar, devemos implementar mecanismos que permitam aos usuários ver apenas quando forem autenticados.
O filtros Eles são ferramentas de Trilhos que nos permitem interceptar chamadas para métodos e ações, permitindo-nos adicionar nossos métodos antes, durante ou depois, para que possamos controlar o fluxo da aplicação como acharmos adequado para cumprir nossas funcionalidades. Nesta fase, vamos usar o antes do filtro para interceptar as chamadas para nossas ações, desta forma podemos verificar a sessão e saber se o usuário está logado, caso contrário, redirecionamos para onde quer que tenhamos combinado. Vamos colocar este método em nosso controlador de aplicação, pois é a base e desta forma estará disponível para toda a aplicação.
Vamos ver o código que temos para isso:
 def autorizar a menos que a sessão [: user_id] flash [: Notice] = "Por favor, faça o login" redirect_to (: controller => "login" ,: action => "login") end end 

Como vemos que a lógica por trás disso é bastante simples, usamos a própria condicional de Ruby, que é a a não ser que, isso nos permite condicionar que, a menos que a condição seja atendida, o código do bloco seja executado. Portanto, a menos que tenhamos um id de um usuário na sessão, iremos redirecioná-lo e pedir que ele se autentique no aplicativo.
Agora, em nosso controlador de administrador, vamos filtrar e pedir aos usuários para autenticar:
 class AdminController <ApplicationController before_filter: authorize 

E em nosso controlador de login também fazemos algo semelhante, apenas adicionaremos a exceção da ação de login que é aquela em que estamos interessados ​​e que pode ser vista por qualquer usuário não autenticado:
 classe LoginController: login 

Se não estivermos logados, devemos ver algo assim ao acessar a página administrativa do aplicativo:

Agora temos a forma de aplicar e filtrar que os usuários não possam ver os painéis administrativos se não estiverem logados, porém temos uma última inconsistência, na parte de eliminação de usuários devemos evitar deletar o administrador geral da aplicação já que se o fizermos não o fizer, existe a possibilidade de um usuário deletar todos os usuários e ficarmos sem acesso a menos que modifiquemos diretamente o banco de dados e seja algo inaceitável para nossa aplicação. Para isso vamos criar novamente um evento especial, neste caso será o before_destroy, o que faz isso antes de fazer a ação destruir execute um método.
Vamos ver o código:
 before_destroy: dont_destroy_dave def dont_destroy_dave raise "Não é possível destruir dave" if self.name == 'dave' end 

Então, em nossa ação de exclusão iremos capturar a mensagem e exibi-la, vamos ver o código de ação:
 def delete_user id = params [: id] if id && user = User.find (id) begin user.destroy flash [: Notice] = "User # {user.name} deletou" resgate flash [: Notice] = "Can ' para excluir esse usuário "end end redirect_to (: action =>: list_users) end 

Com isso finalizamos nosso tutorial sobre como limitar o acesso ao nosso aplicativo, é importante cobrir todas as possibilidades para evitar que usuários não autorizados vejam ou modifiquem nossa parte administrativa, para evitar futuras dores de cabeça e problemas de segurança que tornarão nosso aplicativo inseguro e instável.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo
wave wave wave wave wave