现在我正在处理angularjs和我是新手。我一直在为每个$ http请求和网址更改进行身份验证。因此,我已经实现了URL更改身份验证的代码和平
/** Main Login submit **/
$scope.submit = function() {
console.log("enter login submit");
$scope.submitted = true;
if (!$scope.loginForm.$invalid) {
$scope.login($scope.credentials);
} else {
$scope.error = true;
$scope.error_des = '';
return;
}
};
//enter code here
/** checking after loggedin in each url **/
if ($window.sessionStorage["userInfo"]) {
var credentials = JSON.parse($window.sessionStorage["userInfo"]);
$scope.login(credentials);
};
/** Common login **/
$scope.login = function(credentials) {
$scope.error = false;
Auth.login(credentials, function(user) {
//success function
$mdDialog.hide();
$state.go("admin-panel.default.home");
}, function(err) {
console.log("error");
$scope.error_des = err.msg;
$scope.error = true;
});
};
一切都按照我的预期运作,但在重新编码同一页面时,它总是会重定向到主页(http://localhost:3000/#/home).i知道它是因为
而发生的$state.go("admin-panel.default.home");
我的问题是如何以及在何处给出在重新加载时加载相同页面的条件?
答案 0 :(得分:0)
也许,您的app.js文件中没有登录状态。 因此,当您在登录页面并刷新时,您将在主页上重定向。 如果这不是你的问题,请不要阅读我的其余部分。
所以,下面我展示了我的app.js的片段,我在那里有我的所有状态(我的菜单重定向),最后我使用$ urlRouterProvider.otherwise函数在登录屏幕中重定向用户,如果他们没有登录。
例如,如果我的用户处于登录状态,无论他重新加载页面多少次,他都会一直停留在登录页面上。
我使用这些模块 $ stateProvider,$ urlRouterProvider,$ locationProvider 而不是angularjs的默认 $ route 。
在我的不同状态之后,我添加$urlRouterProvider.otherwise('/login');
作为最后一个选项,以确保他找不到任何其他隐藏或遗忘的网址。
angular.module('MainApp')
.config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
$stateProvider
.state('floorplan', {
url: '/floorplan/:activeEventId',
template: '......',
onEnter: function () {
//write code when you enter that state
},
onExit: function () {
//write code when you change state
}
})
.state('seating', {
url: '/seating',
template: '<div>Seating is under construction</div>'
})
.state('event_details', {
url: '/event/details',
template: '<div>Event details is under construction</div>'
})
.state('reports', {
url: '/reports',
template: '<div>Reports is under construction</div>'
})
.state('login', {
url: '/login',
controller: 'LoginCtrl',
templateUrl: '/assets/modules/login/login.html',
onEnter: function () {
//write code when you enter that state
},
onExit: function () {
//write code when you exit that state
}
});
$urlRouterProvider.otherwise('login'); //when no route found redirect to login
});
我希望有所帮助,祝你好运。