Как предотвратить отображение страницы входа после того, как пользователь вошел в систему и нажал кнопку "Назад" браузера, не используя ionic framework
Я новичок в платформе anglularjs. Я создаю log-in application
, Я сталкиваюсь с проблемой, когда все идет хорошо, но я застрял в управлении, если пользователь уже вошел в систему и пытается открыть один и тот же URL в другой вкладке, он перенаправляет пользователя напрямую dashbord page(dashboard.html)
, но когда я нажимаю browser back button
вместо перехода на предыдущую страницу открывается login page(login_admin.html)
, Сценарий выглядит следующим образом:
localhost: 8080 -> он открывается -> login_admin.html (выполнено).
ввод учетных данных и отправка -> открытие -> dashboard.html (выполнено).
при вводе того же URL-адреса (localhost:8080) на другой вкладке (предположим, ранее открывшийся facebook.com) ---> opens -> dashbord.html (выполнено).
при нажатии кнопки браузера назад, а не идти
facebook.com
, он открывает login_admin.html (неразрешенный). предложите какое-нибудь решение, пожалуйста.
мой код JS выглядит следующим образом:
var app=angular.module('myApp', ['ngRoute','ngCookies']);
console.log("in appnew.js")
app.config(function($routeProvider,$locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when('/',{
templateUrl: 'login_admin.html',
controller: 'userController'
})
.when('/dashboard',{
templateUrl: 'dashboard.html',
controller: 'userController',
authenticated: true
})
.when('/logout',{
templateUrl: 'logout_admin.html',
controller: 'userController'
})
.otherwise({
redirectTo: "/"
});
});
app.controller('userController',function($scope,$location,userModel){
angular.extend($scope,{
login: function(adminfrm){
var data={
jeeb_no: $scope.admin.name,
password: $scope.admin.password
};
userModel.login(data).then(function(){
$location.path('/dashboard');
});
},
logout: function(){
userModel.doUserLogout();
$location.path('/');
}
});
});
app.run(["$rootScope",'$location','userModel', function($rootScope,$location,userModel,$window){
$rootScope.$on('$routeChangeSuccess', function(event, next, current){
console.log("event: %j",event);
console.log("next: %j",next);
console.log('current: %j',current);
if (next.$$route.authenticated) {
console.log("next.$$route.authenticated"+next.$$route.authenticated);
console.log('userModel.getAuthStatus app.run if 1'+userModel.getAuthStatus());
if (!userModel.getAuthStatus()) {
console.log("getAuthStatus"+userModel.getAuthStatus);
console.log('userModel.getAuthStatus app.run if 1(1)'+userModel.getAuthStatus());
$location.path('/');
}
}
if (next.$$route.originalPath =='/') {
console.log("next.$$route.originalPath "+next.$$route.originalPath);
if (userModel.getAuthStatus()) {
console.log("current "+current);
console.log("next "+next);
next.$$route.originalPath = '/dashboard'
$location.path(next.$$route.originalPath);
}
}
});
}]);
app.factory('userModel', function($http,$cookies,$location){
var userModel={};
userModel.login= function(loginfrm){
data={
jeeb_no: loginfrm.jeeb_no,
//password: loginfrm.jeeb_no
};
$cookies.put('auth',data);
console.log("loginfrm"+loginfrm);
return $http.post("http://1/admin_login", data).
success(function(response){
/*console.log('$scope.dynamic1: %j', $scope);*/
console.log("response success: %j",response)
}).
error(function(response){
console.log("response error:",response);
});
};
userModel.getAuthStatus = function(){
var status = $cookies.get('auth');
console.log('status: %j', status);
if(status){
return true;
}
else{
return false;
}
};
console.log('userModel.getAuthStatus'+userModel.getAuthStatus());
userModel.doUserLogout = function(){
$cookies.remove('auth');
}
console.log("userModel: %j",userModel);
return userModel;
})