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 进行身份验证,则只能使用 localStorage
或 sessionStorage
。
在您的情况下,您可能会使用 cookie 和会话。因此,对于这种情况,您希望通过某种方式检查您是否已通过身份验证(因为您的会话或 cookie 可能已过期)。
我会创建一个新端点,例如current_user.php
如果您是否登录,return 是真还是假(甚至是当前用户的详细信息)。然后你想在任何期望用户进行身份验证的请求之前调用它。
您还需要处理任何 return 数据请求,这些请求要求用户使用 fail
回调进行身份验证,如果您收到 401 返回,该回调也会重定向用户。
我是 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 进行身份验证,则只能使用 localStorage
或 sessionStorage
。
在您的情况下,您可能会使用 cookie 和会话。因此,对于这种情况,您希望通过某种方式检查您是否已通过身份验证(因为您的会话或 cookie 可能已过期)。
我会创建一个新端点,例如current_user.php
如果您是否登录,return 是真还是假(甚至是当前用户的详细信息)。然后你想在任何期望用户进行身份验证的请求之前调用它。
您还需要处理任何 return 数据请求,这些请求要求用户使用 fail
回调进行身份验证,如果您收到 401 返回,该回调也会重定向用户。