Índice
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:
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