#################################################################################################### 01. Protegendo a Senha: [Commit: Protegendo a Senha](https://github.com/rocketseat-education/explorer-stock-commits/tree/82399e46ca53b057ccf779f784b632a1a8f05c2e) Nesta aula, vamos aprender uma nova estratégia para lidar com o token de autenticação do usuário. Em vez de armazenar o token no local storage, vamos utilizar o cookie como estratégia, pois é mais seguro para lidar com informações sensíveis. O cookie nos ajuda a prevenir ataques de cross-site scripting (XSS), que são ataques maliciosos que podem injetar scripts em páginas web. Com o cookie, podemos definir configurações de segurança que tornam nossa aplicação mais segura e protegem o token do usuário. Vamos ver isso na prática, removendo a senha da resposta do back-end e refatorando nossa aplicação para utilizar o cookie como estratégia de autenticação. #################################################################################################### 02. Cookie no Back-end: [Commit: Cookie no Back-end](https://github.com/rocketseat-education/explorer-stock-commits/tree/60a3f4b1eaac00e41a6ce2052c53887184ee90d9) Nesta aula, vamos focar no back-end e refatorar para utilizar cookies em vez de token no local storage. Faremos as alterações no SessionsController para não devolver mais o token na resposta da requisição, mas sim inserir o token no cookie. Vamos instalar a biblioteca cookie-parser para lidar com os cookies. No server.js, faremos algumas configurações, como especificar os endereços que podem acessar o back-end, definir a propriedade "credentials" como true para utilizar o cookie e modificar o middleware de autenticação para buscar o token no cookie. Por fim, adicionaremos o token do usuário no cookie da resposta com configurações de segurança. #################################################################################################### 03. Cookie no Front-end: [Commit: Cookie no Front-end](https://github.com/rocketseat-education/explorer-stock-commits/tree/14ad657ea19cf87e0a283fa30fa8da40c077759c) Nesta aula, vamos focar no front-end do nosso projeto. Agora que refatoramos o back-end para usar cookies para lidar com o token de autenticação, precisamos atualizar o front-end para usar esse token na nossa aplicação. Vamos acessar o arquivo alph.jsx, onde temos a função signIn. Antes, o token era retornado na resposta do back-end, mas agora ele é retornado em um cookie. Portanto, precisamos remover o código que salvava o token no local storage. Agora, o token é enviado pelo cookie nas requisições. Vamos verificar isso no cabeçalho da resposta e também no cookie do navegador. Na próxima aula, veremos como usar esse cookie para a autorização. #################################################################################################### 04. Usando Cookie na Autorização: [Commit: Usando Cookie na Autorização](https://github.com/rocketseat-education/explorer-stock-commits/tree/ad044c0c56bd87ed531cd216c0379dd07668db32) Nesta aula, aprendemos sobre a rota de relatório de vendas e como apenas alguns perfis têm acesso a ela. Exploramos o código do back-end para verificar quais perfis têm acesso e vimos que o perfil "joao" não tem acesso, mas o perfil "admin" sim. Em seguida, fomos para o front-end e utilizamos o useEffect para fazer uma requisição à rota de vendas. No entanto, recebemos um erro de não autorizado (401) porque não passamos o JWToken. Para corrigir isso, adicionamos a propriedade "withCredential" como true na requisição. Depois disso, recebemos um erro interno (500) porque faltou a propriedade "cookie" na requisição. Corrigimos esse problema e conseguimos obter as informações do back-end. Essa é uma estratégia segura para lidar com o token de autenticação do usuário, evitando armazená-lo no local store. #################################################################################################### 05. Validando Usuário: [Commit: Validando Usuário](https://github.com/rocketseat-education/explorer-stock-commits/tree/47ca9dca3f277f4e8f5ce8f92d4cd50701956842) Nesta aula, aprendemos sobre como lidar com erros de autenticação no nosso aplicativo. Quando um usuário recebe um erro de "401 não autorizado", podemos redirecioná-lo para a página inicial ou fazer o logout do usuário. Para fazer isso, podemos criar uma função de logout e chamá-la quando ocorrer o erro de autenticação. Também aprendemos sobre a importância de verificar se o usuário existe no banco de dados antes de realizar qualquer ação. Criamos uma rota de validação de usuário para garantir que o usuário exista antes de prosseguir. Além disso, aprendemos a importância de adicionar o middleware de autenticação para proteger nossas rotas. #################################################################################################### 06. Deslogando pelo Status Code: Nesta aula, aprendemos como implementar um filtro de autorização para deslogar o usuário caso ele não esteja autorizado. Primeiro, testamos o login com um usuário válido para garantir que está funcionando corretamente. Em seguida, fizemos um teste manual, alterando o local storage para simular um usuário não autorizado. Ao recarregar a página, verificamos que o usuário foi deslogado corretamente. No entanto, percebemos que o tratamento de erros estava muito genérico, deslogando o usuário para qualquer erro. Para melhorar isso, implementamos um filtro para verificar se o status code é 401 (não autorizado) antes de deslogar o usuário. #################################################################################################### 01. Protegendo a Senha: [Commit: Protegendo a Senha](https://github.com/rocketseat-education/explorer-stock-commits/tree/82399e46ca53b057ccf779f784b632a1a8f05c2e) Nesta aula, vamos aprender uma nova estratégia para lidar com o token de autenticação do usuário. Em vez de armazenar o token no local storage, vamos utilizar o cookie como estratégia, pois é mais seguro para lidar com informações sensíveis. O cookie nos ajuda a prevenir ataques de cross-site scripting (XSS), que são ataques maliciosos que podem injetar scripts em páginas web. Com o cookie, podemos definir configurações de segurança que tornam nossa aplicação mais segura e protegem o token do usuário. Vamos ver isso na prática, removendo a senha da resposta do back-end e refatorando nossa aplicação para utilizar o cookie como estratégia de autenticação. #################################################################################################### 02. Cookie no Back-end: [Commit: Cookie no Back-end](https://github.com/rocketseat-education/explorer-stock-commits/tree/60a3f4b1eaac00e41a6ce2052c53887184ee90d9) Nesta aula, vamos focar no back-end e refatorar para utilizar cookies em vez de token no local storage. Faremos as alterações no SessionsController para não devolver mais o token na resposta da requisição, mas sim inserir o token no cookie. Vamos instalar a biblioteca cookie-parser para lidar com os cookies. No server.js, faremos algumas configurações, como especificar os endereços que podem acessar o back-end, definir a propriedade "credentials" como true para utilizar o cookie e modificar o middleware de autenticação para buscar o token no cookie. Por fim, adicionaremos o token do usuário no cookie da resposta com configurações de segurança. #################################################################################################### 03. Cookie no Front-end: [Commit: Cookie no Front-end](https://github.com/rocketseat-education/explorer-stock-commits/tree/14ad657ea19cf87e0a283fa30fa8da40c077759c) Nesta aula, vamos focar no front-end do nosso projeto. Agora que refatoramos o back-end para usar cookies para lidar com o token de autenticação, precisamos atualizar o front-end para usar esse token na nossa aplicação. Vamos acessar o arquivo alph.jsx, onde temos a função signIn. Antes, o token era retornado na resposta do back-end, mas agora ele é retornado em um cookie. Portanto, precisamos remover o código que salvava o token no local storage. Agora, o token é enviado pelo cookie nas requisições. Vamos verificar isso no cabeçalho da resposta e também no cookie do navegador. Na próxima aula, veremos como usar esse cookie para a autorização. #################################################################################################### 04. Usando Cookie na Autorização: [Commit: Usando Cookie na Autorização](https://github.com/rocketseat-education/explorer-stock-commits/tree/ad044c0c56bd87ed531cd216c0379dd07668db32) Nesta aula, aprendemos sobre a rota de relatório de vendas e como apenas alguns perfis têm acesso a ela. Exploramos o código do back-end para verificar quais perfis têm acesso e vimos que o perfil "joao" não tem acesso, mas o perfil "admin" sim. Em seguida, fomos para o front-end e utilizamos o useEffect para fazer uma requisição à rota de vendas. No entanto, recebemos um erro de não autorizado (401) porque não passamos o JWToken. Para corrigir isso, adicionamos a propriedade "withCredential" como true na requisição. Depois disso, recebemos um erro interno (500) porque faltou a propriedade "cookie" na requisição. Corrigimos esse problema e conseguimos obter as informações do back-end. Essa é uma estratégia segura para lidar com o token de autenticação do usuário, evitando armazená-lo no local store. #################################################################################################### 05. Validando Usuário: [Commit: Validando Usuário](https://github.com/rocketseat-education/explorer-stock-commits/tree/47ca9dca3f277f4e8f5ce8f92d4cd50701956842) Nesta aula, aprendemos sobre como lidar com erros de autenticação no nosso aplicativo. Quando um usuário recebe um erro de "401 não autorizado", podemos redirecioná-lo para a página inicial ou fazer o logout do usuário. Para fazer isso, podemos criar uma função de logout e chamá-la quando ocorrer o erro de autenticação. Também aprendemos sobre a importância de verificar se o usuário existe no banco de dados antes de realizar qualquer ação. Criamos uma rota de validação de usuário para garantir que o usuário exista antes de prosseguir. Além disso, aprendemos a importância de adicionar o middleware de autenticação para proteger nossas rotas. #################################################################################################### 06. Deslogando pelo Status Code: Nesta aula, aprendemos como implementar um filtro de autorização para deslogar o usuário caso ele não esteja autorizado. Primeiro, testamos o login com um usuário válido para garantir que está funcionando corretamente. Em seguida, fizemos um teste manual, alterando o local storage para simular um usuário não autorizado. Ao recarregar a página, verificamos que o usuário foi deslogado corretamente. No entanto, percebemos que o tratamento de erros estava muito genérico, deslogando o usuário para qualquer erro. Para melhorar isso, implementamos um filtro para verificar se o status code é 401 (não autorizado) antes de deslogar o usuário. #################################################################################################### 01. Protegendo a Senha: [Commit: Protegendo a Senha](https://github.com/rocketseat-education/explorer-stock-commits/tree/82399e46ca53b057ccf779f784b632a1a8f05c2e) Nesta aula, vamos aprender uma nova estratégia para lidar com o token de autenticação do usuário. Em vez de armazenar o token no local storage, vamos utilizar o cookie como estratégia, pois é mais seguro para lidar com informações sensíveis. O cookie nos ajuda a prevenir ataques de cross-site scripting (XSS), que são ataques maliciosos que podem injetar scripts em páginas web. Com o cookie, podemos definir configurações de segurança que tornam nossa aplicação mais segura e protegem o token do usuário. Vamos ver isso na prática, removendo a senha da resposta do back-end e refatorando nossa aplicação para utilizar o cookie como estratégia de autenticação. #################################################################################################### 02. Cookie no Back-end: [Commit: Cookie no Back-end](https://github.com/rocketseat-education/explorer-stock-commits/tree/60a3f4b1eaac00e41a6ce2052c53887184ee90d9) Nesta aula, vamos focar no back-end e refatorar para utilizar cookies em vez de token no local storage. Faremos as alterações no SessionsController para não devolver mais o token na resposta da requisição, mas sim inserir o token no cookie. Vamos instalar a biblioteca cookie-parser para lidar com os cookies. No server.js, faremos algumas configurações, como especificar os endereços que podem acessar o back-end, definir a propriedade "credentials" como true para utilizar o cookie e modificar o middleware de autenticação para buscar o token no cookie. Por fim, adicionaremos o token do usuário no cookie da resposta com configurações de segurança. #################################################################################################### 03. Cookie no Front-end: [Commit: Cookie no Front-end](https://github.com/rocketseat-education/explorer-stock-commits/tree/14ad657ea19cf87e0a283fa30fa8da40c077759c) Nesta aula, vamos focar no front-end do nosso projeto. Agora que refatoramos o back-end para usar cookies para lidar com o token de autenticação, precisamos atualizar o front-end para usar esse token na nossa aplicação. Vamos acessar o arquivo alph.jsx, onde temos a função signIn. Antes, o token era retornado na resposta do back-end, mas agora ele é retornado em um cookie. Portanto, precisamos remover o código que salvava o token no local storage. Agora, o token é enviado pelo cookie nas requisições. Vamos verificar isso no cabeçalho da resposta e também no cookie do navegador. Na próxima aula, veremos como usar esse cookie para a autorização. #################################################################################################### 04. Usando Cookie na Autorização: [Commit: Usando Cookie na Autorização](https://github.com/rocketseat-education/explorer-stock-commits/tree/ad044c0c56bd87ed531cd216c0379dd07668db32) Nesta aula, aprendemos sobre a rota de relatório de vendas e como apenas alguns perfis têm acesso a ela. Exploramos o código do back-end para verificar quais perfis têm acesso e vimos que o perfil "joao" não tem acesso, mas o perfil "admin" sim. Em seguida, fomos para o front-end e utilizamos o useEffect para fazer uma requisição à rota de vendas. No entanto, recebemos um erro de não autorizado (401) porque não passamos o JWToken. Para corrigir isso, adicionamos a propriedade "withCredential" como true na requisição. Depois disso, recebemos um erro interno (500) porque faltou a propriedade "cookie" na requisição. Corrigimos esse problema e conseguimos obter as informações do back-end. Essa é uma estratégia segura para lidar com o token de autenticação do usuário, evitando armazená-lo no local store. #################################################################################################### 05. Validando Usuário: [Commit: Validando Usuário](https://github.com/rocketseat-education/explorer-stock-commits/tree/47ca9dca3f277f4e8f5ce8f92d4cd50701956842) Nesta aula, aprendemos sobre como lidar com erros de autenticação no nosso aplicativo. Quando um usuário recebe um erro de "401 não autorizado", podemos redirecioná-lo para a página inicial ou fazer o logout do usuário. Para fazer isso, podemos criar uma função de logout e chamá-la quando ocorrer o erro de autenticação. Também aprendemos sobre a importância de verificar se o usuário existe no banco de dados antes de realizar qualquer ação. Criamos uma rota de validação de usuário para garantir que o usuário exista antes de prosseguir. Além disso, aprendemos a importância de adicionar o middleware de autenticação para proteger nossas rotas. #################################################################################################### 06. Deslogando pelo Status Code: Nesta aula, aprendemos como implementar um filtro de autorização para deslogar o usuário caso ele não esteja autorizado. Primeiro, testamos o login com um usuário válido para garantir que está funcionando corretamente. Em seguida, fizemos um teste manual, alterando o local storage para simular um usuário não autorizado. Ao recarregar a página, verificamos que o usuário foi deslogado corretamente. No entanto, percebemos que o tratamento de erros estava muito genérico, deslogando o usuário para qualquer erro. Para melhorar isso, implementamos um filtro para verificar se o status code é 401 (não autorizado) antes de deslogar o usuário.