Angular.js и PHP: хранение информации для входа при обновлении страницы

0

Пользователь может использовать форму login.html, которая использует кнопку отправки, которая вызывает метод угловой почты, и отправляет имя пользователя/адрес электронной почты и пароль в login.php, где хранится таблица MySQL. Остальная информация пользователя собирается из таблицы и хранится в $ _SESSION, сеанс json-encoded и отправляется обратно в angular.js.

Угловой AuthController

app.controller("AuthController", function($scope, $http, $rootScope, $window) {

$scope.ctlr = 'Auth';

$scope.ngPOSTLogin = function() {
    var data = {
        UserName: $scope.UserName,
        Password: $scope.Password
    }
    $http.post('server/auth/login.php', JSON.stringify(data))
        .then(function(result) {
            $rootScope.user = result.data;
            //$window.sessionStorage['$rootScope.user'] = JSON.stringify($rootScope.user);
        });
};
});

Теперь, если пользователь обновляет страницу, обновляется $ rootScope, что означает, что данные для входа теряются. используя $ window.sessionStorage сохраняет весь объект JSON (с паролем), который показывает, что он, вероятно, должен быть зашифрован. Вопрос прост, как я могу сохранить информацию для входа в систему, даже если они перезагружают страницу. Я не хочу использовать какие-то проекты github (например, ngStorage). Весь мой проект - https://github.com/AquaSolid/RAMA_Angular_PHP

редактировать

Это пример того, что возвращает login.php

{"ID":"3","UserName":"TommyGun","FirstName":"Tommy","LastName":"Larson","Email":"[email protected]","Logged":true}

Пароль никогда не возвращается, я допустил ошибку при написании вопроса, извините..

  • 0
    попробуй localalstorage браузера?
  • 0
    «Данные не будут удалены при закрытии браузера и будут доступны на следующий день, неделю или год». - Я не думаю, что это хорошо для пользовательской информации
Показать ещё 1 комментарий

1 ответ

2
Лучший ответ

Зачем хранить пароль в браузере? Приложение не нуждается в этом. Пользователю это не нужно. Сервер ему не нужен. Это просто дыра в безопасности, но не вверх.

Когда пользователь входит в систему, не отправляйте обратно всю информацию в записи БД. Отправляйте только то, что нужно для работы приложения. Остальные могут оставаться в Сессии.

Что касается вашего вопроса об освежении. Сессия или локальное хранилище - это путь. На стороне сервера сохраните last_seen метку last_seen в $_SESSION. Обновляйте его каждый раз, когда пользователь вводит новый запрос. Если пользователь не был замечен какое-то время, он не будет обновлен. Итак, все, что вам нужно сделать, это проверить, стоит ли $_SESSION['last_seen'] за последние 20 минут или что-то еще. Если это слишком далеко в прошлом, вызовите session_destroy() и потребуйте новый логин.

  • 0
    Это информация, которую возвращает login.php, я не знаю, почему я так сказал .. Я отредактирую свой вопрос, извините .. {"ID": "3", "UserName": "TommyGun", "FirstName" : "Томми", "LastName": "Ларсон", "Электронная почта": "[email protected]", "Записан": правда}
  • 0
    Это облегчение ;-) Те же понятия из моего ответа применимы. Отправляйте только то, что нужно приложению. Например , почему отправить обратно ID , UserName , полное имя и email ? Все ли это необходимо для работы приложения?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню