如何使用angularjs和laravel将用户重定向到登录页面
我正在使用laravel和angularjs进行一个项目。我只使用Laravel对用户进行身份验证,当用户登录时,angularjs ui veiw将处理导航。在执行此操作时,我意识到一个问题,当会话过期时,应根据路由上设置的身份验证筛选器将用户重定向到登录页面。此外,当我选中浏览器开发工具网络选项卡时,我看到登录页面作为响应发送。我想知道当会话过期时,如何使我的项目将用户重定向到登录页面。如何解决此问题,并提前感谢您的帮助。要在JavaScript中重定向用户客户端,请使用如何使用angularjs和laravel将用户重定向到登录页面,angularjs,laravel,Angularjs,Laravel,我正在使用laravel和angularjs进行一个项目。我只使用Laravel对用户进行身份验证,当用户登录时,angularjs ui veiw将处理导航。在执行此操作时,我意识到一个问题,当会话过期时,应根据路由上设置的身份验证筛选器将用户重定向到登录页面。此外,当我选中浏览器开发工具网络选项卡时,我看到登录页面作为响应发送。我想知道当会话过期时,如何使我的项目将用户重定向到登录页面。如何解决此问题,并提前感谢您的帮助。要在JavaScript中重定向用户客户端,请使用位置 对于这种情况,
位置
对于这种情况,我想您应该特别关注location.assign()
您可以使用$httpInterceptor实现这一点,下面是演示代码:
var myApp = angular.module("MyApp", []);
myApp.config(function ($httpProvider, $provide) {
$provide.factory('myHttpInterceptor', function ($q, $location) {
return {
'response': function (response) {
//you can handle you sucess response here.
return response;
},
'responseError': function (rejection) {
console.log(rejection);
//if(rejection.data.xxx==="xxx")
if(rejection.status === 408){//session expired code
alert('logout!');
// clear your local data here...
$location.url("/login")
}
return $q.reject(rejection);
}
};
});
$httpProvider.interceptors.push('myHttpInterceptor');
});
myApp.controller("MainController", function ($scope, $http) {
$scope.response = {};
$scope.triggerGet = function () {
$http.get("/my/json").success(function (data) {
$scope.response = data;
});
};
});
当服务器端响应会话过期时,您可以处理响应.status
,也可以使用响应.data
处理其他数据
不要使用标准的同步身份验证,而是研究AngularJs单页应用程序的异步JWT身份验证。所以这里有一些资源让你开始,还有一个特定于laravel的JWT包。请注意,不要引用我的话,我相信对于单页应用程序,异步JWT身份验证是单页应用程序的最佳途径。如果有人读到这篇文章知道其他情况,请让我知道。我要试试这个吗