簡體   English   中英

Angular.js和PHP:頁面刷新時保留登錄信息

[英]Angular.js and PHP: Keeping login information when page refresh

用戶可以使用login.html表單,該表單使用一個提交按鈕,該按鈕調用一個有角度的post方法,並將用戶名/電子郵件和密碼發送到用於存儲MySQL表的login.php。 用戶的其余信息從表中收集並存儲在$ _SESSION中,該會話經過json編碼並發送回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":"tommy.larson@gmail.com","Logged":true}

密碼永遠不會返回,我在寫問題時犯了一個錯誤,對不起。

為什么要將密碼存儲在瀏覽器中? 該應用程序不需要它。 用戶不需要它。 服務器不需要它。 這只是一個沒有漏洞的安全漏洞。

用戶登錄時,請勿將數據庫記錄中的所有信息都發回。 僅發回應用需要的功能。 其余的可以保留在Session中。

至於您有關刷新的問題。 會話或本地存儲是必經之路。 在服務器端,將last_seen時間戳存儲在$_SESSION 每次用戶發出新請求時刷新。 如果有一段時間沒有看到用戶,則不會刷新。 因此,您要做的就是檢查$_SESSION['last_seen']是否在最近的20分鍾之內或其他時間。 如果session_destroy()了,請調用session_destroy()並要求重新登錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM