Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用angularjs和laravel将用户重定向到登录页面_Angularjs_Laravel - Fatal编程技术网

如何使用angularjs和laravel将用户重定向到登录页面

如何使用angularjs和laravel将用户重定向到登录页面,angularjs,laravel,Angularjs,Laravel,我正在使用laravel和angularjs进行一个项目。我只使用Laravel对用户进行身份验证,当用户登录时,angularjs ui veiw将处理导航。在执行此操作时,我意识到一个问题,当会话过期时,应根据路由上设置的身份验证筛选器将用户重定向到登录页面。此外,当我选中浏览器开发工具网络选项卡时,我看到登录页面作为响应发送。我想知道当会话过期时,如何使我的项目将用户重定向到登录页面。如何解决此问题,并提前感谢您的帮助。要在JavaScript中重定向用户客户端,请使用位置 对于这种情况,

我正在使用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身份验证是单页应用程序的最佳途径。如果有人读到这篇文章知道其他情况,请让我知道。我要试试这个吗