Angularjs 在新浏览器中打开链接,将我重定向到Angular JS中的登录页面

Angularjs 在新浏览器中打开链接,将我重定向到Angular JS中的登录页面,angularjs,angular-ui-router,http-token-authentication,angularjs-authentication,Angularjs,Angular Ui Router,Http Token Authentication,Angularjs Authentication,我有一个AngularJS网站,其中包含很少的超链接。每当我尝试在同一选项卡中打开链接时,它工作正常,但每当我尝试在新选项卡中打开链接时,它会将我重定向到登录页面 RouteController.js var app = angular.module("appHome", ['ui.router']); app.config(function ($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise('/lo

我有一个AngularJS网站,其中包含很少的超链接。每当我尝试在同一选项卡中打开链接时,它工作正常,但每当我尝试在新选项卡中打开链接时,它会将我重定向到登录页面

RouteController.js

var app = angular.module("appHome", ['ui.router']);

app.config(function ($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise('/login');
    $stateProvider
        .state('introduction', {
            url: '/',
            views: {
                'mainview':
                {
                    templateUrl: 'HomeLoginPages/Login.html',
                    controller: 'ctrlLogin'
                }
            }
        })
        .state('login', {
            url: '/login',
            views: {
                'mainview':
                {
                    templateUrl: 'HomeLoginPages/Login.html',
                    controller: 'ctrlLogin'
                }
            }
        })
        .state('home.eventlist.requestdetail', {
            url: '/requestdetail',
            params: { paramOne: "defaultValueOne", paramTwo: "defaultValueTwo", paramThree: "defaultValueThree", paramFour: "defaultValueFour" },
            views: {
                'homedetailview@home':
                {
                    templateUrl: 'RequestPages/DetailedRequest.html',
                    controller: 'ctrlRequestDetail',

                }
            }
        })
})
var myApp = angular.module('appHome');
myApp.controller("ctrlEventList", ['$scope', 'MetadataOrgFactory', function ($scope, MetadataOrgFactory) {
    $scope.gridEventList = {
        data: 'eventlistdata',     
        columnDefs: [
            { field: 'SiteEventNumber', displayName: 'Event Number' },
            {
                field: 'RequestNumber', displayName: 'Event Request',
                cellTemplate: '<a ui-sref=".requestdetail({paramOne:row.entity.RequestId, paramTwo:row.entity.EventId, paramThree: 1,paramFour: defaultValueFour})" class="ui-grid-cell-contents">{{COL_FIELD}}</a>'
            },
        ]
    }
}]);
HTML文件

<form class="form-main">
    <div class="div-main">
        <div class="gridBigStyle" ui-grid="gridEventList" ui-grid-pagination>
        </div>
    </div>
</form>

Controller.js

var app = angular.module("appHome", ['ui.router']);

app.config(function ($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise('/login');
    $stateProvider
        .state('introduction', {
            url: '/',
            views: {
                'mainview':
                {
                    templateUrl: 'HomeLoginPages/Login.html',
                    controller: 'ctrlLogin'
                }
            }
        })
        .state('login', {
            url: '/login',
            views: {
                'mainview':
                {
                    templateUrl: 'HomeLoginPages/Login.html',
                    controller: 'ctrlLogin'
                }
            }
        })
        .state('home.eventlist.requestdetail', {
            url: '/requestdetail',
            params: { paramOne: "defaultValueOne", paramTwo: "defaultValueTwo", paramThree: "defaultValueThree", paramFour: "defaultValueFour" },
            views: {
                'homedetailview@home':
                {
                    templateUrl: 'RequestPages/DetailedRequest.html',
                    controller: 'ctrlRequestDetail',

                }
            }
        })
})
var myApp = angular.module('appHome');
myApp.controller("ctrlEventList", ['$scope', 'MetadataOrgFactory', function ($scope, MetadataOrgFactory) {
    $scope.gridEventList = {
        data: 'eventlistdata',     
        columnDefs: [
            { field: 'SiteEventNumber', displayName: 'Event Number' },
            {
                field: 'RequestNumber', displayName: 'Event Request',
                cellTemplate: '<a ui-sref=".requestdetail({paramOne:row.entity.RequestId, paramTwo:row.entity.EventId, paramThree: 1,paramFour: defaultValueFour})" class="ui-grid-cell-contents">{{COL_FIELD}}</a>'
            },
        ]
    }
}]);
var myApp=angular.module('appHome');
控制器(“ctrlEventList”[“$scope”,“MetadataOrgFactory”,函数($scope,MetadataOrgFactory){
$scope.gridEventList={
数据:“eventlistdata”,
columnDefs:[
{字段:'SiteEventNumber',显示名称:'EventNumber'},
{
字段:“RequestNumber”,显示名称:“事件请求”,
cellTemplate:“{{COL_FIELD}}”
},
]
}
}]);

我在用户登录期间使用令牌身份验证。令牌始终有效,但它仍将我重定向到登录页面。

我已将登录信息保存在所有选项卡中使用的localstorage变量中。当用户注销时,我已显式地将该值设置为空,以便所有其他选项卡页面将重定向到登录页面。我希望这个答案能帮助其他人。

您将代币存放在哪里?是否跨选项卡共享?令牌存储在Sessionstorage中。如何在选项卡中共享此标记,以及如何使用此标记在新选项卡中授权WEB API服务调用?请尝试此操作。打开开发工具并查看sessionStorage项目(在Chrome中,它位于开发工具->应用程序->Cookies下),打开另一个带有开发工具的选项卡,然后通过粘贴URL加载页面,您是否看到sessionStorage被带过?