Angularjs & PHP 登录

Angularjs & PHP Login

我是 angularjs 的新手,我对登录过程有点困惑。

每次我登录时都会被重定向到特定页面。已经在代码中设置了。

我只想检查用户是否已登录。如果是,则重定向到 --Home-- 如果没有登录重定向到 --Login Again--

我应该用什么做这个?

我听说过本地存储。 SessionStorage,我对他们不熟悉。 告诉我可以通过哪种方式管理登录?

这是我的登录控制器

app.controller('AngularLoginController', ['$scope', '$http', function($scope, $http) {   
    $scope.loginForm = function() {         
            $http.post("login.php", {
            'email' :$scope.inputData.email,
            'password':$scope.inputData.password
            }).success(function(data) {
                console.log(data);                  
                if ( data == 'correct') {
                window.location.href = 'welcome_dashboard.php';
                } 
            else {
                $scope.errorMsg = "Invalid Email and Password";
            }
        })
        }
}]);

您可以使用 $cookieStore of angular js

after successfull login you can put login true

$cookieStore.put('login', true);

如果 $cookieStore.get('login') 未定义而不是在登录页面重定向

,请检查您的仪表板控制器

当您注销时,您需要删除此 cookie $cookieStore.remove('login')

如果你使用 routerprovider 比使用 resolve 更容易检查登录与否,这里是 resolve 的一个简单示例

function ($routeProvider) {
    $routeProvider.
        when('/', {
            controller: 'dashboardController',
            templateUrl: 'app/views/dashboard.html',
            resolve:{loggedIn:onlyLoggedIn}
         })
 }

var onlyLoggedIn = function ($location,$q,$cookieStore,$rootScope) {
    var deferred = $q.defer();
    if (typeof ($cookieStore.get("login")) === "undefined") {
        deferred.reject();
        window.location.href = 'login.html';
    }else{
        $rootScope.display = true;
        deferred.resolve();
    }
    return deferred.promise;

};

如果您有令牌,例如,如果您使用 OAuth 进行身份验证,则只能使用 localStoragesessionStorage

在您的情况下,您可能会使用 cookie 和会话。因此,对于这种情况,您希望通过某种方式检查您是否已通过身份验证(因为您的会话或 cookie 可能已过期)。

我会创建一个新端点,例如current_user.php 如果您是否登录,return 是真还是假(甚至是当前用户的详细信息)。然后你想在任何期望用户进行身份验证的请求之前调用它。

您还需要处理任何 return 数据请求,这些请求要求用户使用 fail 回调进行身份验证,如果您收到 401 返回,该回调也会重定向用户。