簡體   English   中英

angularjs當我刷新頁面時,它會將我重定向到登錄頁面

[英]angularjs When I refresh my page it redirects me to login page

嗨,在設置Spring Security之后,登錄對我來說很有效,但是當我刷新任何頁面時,它將重定向到登錄頁面。 我該如何擺脫它。 這是我的代碼

config.js

 'use strict';
var app = angular.module('MyApp', [ 'ngResource', 'ngRoute',
        'myAppControllers', 'ngAnimate', 'ui.bootstrap', 'ngCookies' ]);

app.config(function($routeProvider) {

    $routeProvider.when('/products/:idCat', {
        templateUrl : '../views/partials/products.html',
        controller : 'ProductsController'

    }).when('/products', {
        templateUrl : '../views/partials/allProducts.html',
        controller : 'ProductsController'

    }).when('/supprimer', {
        templateUrl : '../views/partials/delete.html',

    }).when('/update', {
        templateUrl : '../views/partials/update.html',
        controller : 'UserController'

    }).when('/client', {
        templateUrl : '../views/partials/client.html',
        controller : 'ClientController'
    }).when('/agences', {
        templateUrl : '../views/partials/agences.html',
        controller : 'MapController'

    }).when('/login', {
        templateUrl : '../views/partials/login.html',
        controller : 'mainController'
    }).when('/', {
        templateUrl : '../views/partials/Home.html',
    })
    $routeProvider.otherwise('/');

});
app.run(function($route, $rootScope, $http, $location, $cookieStore,
        $anchorScroll) {
    $rootScope.authenticated = false;
    $rootScope.$on('$routeChangeStart', function() {
        var originalPath = $location.url();
        if ($rootScope.authenticated == false) {
            $location.path('/login');

        } else {
            $rootScope.redirectUrl = angular.copy($location.url());
            var user = $cookieStore.get('user');
            if (user !== undefined) {
                $rootScope.user = user;
                $http.defaults.headers.common['X-Auth-Token'] = user.token;
                $location.url(originalPath);}})
});

我的app.js中我有我的控制器ang調用以驗證服務

myAppControllers
        .controller(
                'mainController',
                function($scope, $rootScope, loginService, ProductService,
                        $location, $cookies, $cookieStore, $http) {
                    $rootScope.salesAgent = true;
                    $scope.loggedIn = false;
                    $rootScope.hasRole = function(role) {

                        if ($rootScope.user === undefined) {
                            return false;
                        }

                        if ($rootScope.user.authorities === undefined) {
                            return false;
                        }

                        for (var i = 0; i < $rootScope.user.authorities.length; i++) {
                            if ($rootScope.user.authorities[i].authority == role)
                                return true;
                        }

                        return false;
                    };

                    $scope.logout = function() {

                        console.log("Testtttttttttt");
                        delete $rootScope.user;
                        delete $http.defaults.headers.common['X-Auth-Token'];
                        $cookieStore.remove('user');
                        $location.url("/login");
                    };

                    $scope.authenticate = function() {
                                loginService
                                        .authenticate($scope.username,
                                                $scope.password)
                                        .then(
                                                function(user) {

                                                    $rootScope.user = user;
                                                    $http.defaults.headers.common['X-Auth-Token'] = user.token;
                                                    $cookieStore.put('user',
                                                            user);

                                                    if ($rootScope.redirectUrl != null
                                                            && $rootScope.redirectUrl
                                                                    .indexOf('/') == -1)
                                                        $location
                                                                .url($rootScope.redirectUrl);
                                                    else {
                                                        $rootScope.authenticated = true;
                                                        $location.path("/");
                                                    }
                                                    $rootScope.redirectUrl = null;
                                                    $rootScope.redirectStatus = null;
                                                }),
                                function err(data) {
                                    if ($rootScope.redirectStatus == 401)
                                        }
                    };});

我很高興您的幫助!

檢查cookie是否存在,作為run第一步

app.run(function($route, $rootScope, $http, $location, $cookieStore, $anchorScroll) {
    var user = $cookieStore.get('user');
        if (user !== undefined) {
        // set up X- header and other variables here

刷新后,您將在$ rootScope中存儲經過身份驗證的值,該值將變為空,而不是將$ cookieStore用於angular 1.2或更低版本,或將$ cookies用於angular 1.2或更高版本。 您正在為用戶使用$ cookieStore,對經過身份驗證的用戶也是如此

$cookieStore.put('authenticated',$rootScope.authenticated);

另一個選擇是將身份驗證值存儲在localStorage中:

localStorage.setItem ('session.authenticated', true);

然后,您可以獲取身份驗證值,如下所示:

localStorage.getItem("session.authenticated") || false;

暫無
暫無

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

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