7
respostas

Usando localstorage no ionic

Boa tarde, queria saber como utilizar certo esse localstorage para que carregasse a lista de carros já com login sem precisa fazer, coloquei esses campos no login.controller.js

window.localStorage.setItem("email",$scope.login.email);
window.localStorage.setItem("password", $scope.login.password);

Achei um link no stackoverflow explicando como pode ser utilizado

http://stackoverflow.com/questions/40214104/remember-user-and-password-in-my-ionic-app

Em um dos trechos ele fala para buscar internamente do app

ionicPlatform.ready(function() {                
     document.addEventListener("deviceready", function() {
       if(window.localstorage.getItem("username")! == null && window.localstorage.getItem("password")! == null){
           state.go("afterLogin.html");
       }
       else
           state.go("login.html");

       }, false);
}

Queria saber onde eu coloco isso se vai ser no routes.js ou login.controller.js

7 respostas

Oi Yuri.

Nesse exemplo aí ele coloca no ready. Essa função é executada logo depois que o framework é carregado. Acho que vc pode colocar aí mesmo, assim antes de ir para a tela de login, ele vai passar por essa função aí.

Essa função fica no app.js

Erro que dá

ionic.bundle.js:13443 Uncaught Error: [$injector:modulerr] Failed to instantiate module starter due to:
Error: [$injector:nomod] Module 'starter' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

Veja que o erro está referenciando ao módulo Starter. Alguma alteração q vc fez na hora de carrega-lo

Arrumei a parte, porém agora toda vez que abro a aplicação ele carrega lá as informações, queria saber se é possível mandar o objeto todo da consulta. E também remover os itens do localstorage pois a condição ficou assim.

if(window.localStorage.getItem("email") !== null && window.localStorage.getItem("password") !== null){
          $state.go('app.listagem');
       }
    else{
          $state.go('/login');
    }

No menu tem um item assim

 <ion-item nav-clear menu-close class="item-icon-left sider" ng-click="logout()">
                    <i class="icon ion-log-out"></i>Sair
                </ion-item>

E fiz um controller para tratar isso.

angular.module('starter')
.controller('LogoutController', function($scope, $state) {
    $scope.logout = function(){
       window.localStorage.clear();
    $state.go('/login');
     };
})

Porém ele não funciona.

Vc pode fazer qualquer operação que quiser nessa função ready.

Se não funcionou, ele lançou algum erro? Lembre-se de sempre usar a aba console para nos ajudar a te ajudar, pois as vezes só o código não é suficiente.

Existe alguma forma de encriptar essa informação? Não seria fácil para alguém descobrir o os dados? Só conseguir achar uma solução chamada Secure Storage, mas parece que só para a versão 2 do Ionic. Existe algo parecido para a versão 1?