como impedir a exibição da página de login após o usuário logar e pressionar o botão Voltar do navegador sem usar a estrutura iônica
Eu sou novo na plataforma anglularjs. Estou criando umlog-in application
. Estou enfrentando um problema no qual tudo está indo bem, mas fiquei preso para gerenciar que, se o usuário já estiver conectado e tentando abrir o mesmo URL em uma guia diferente, ele o redirecionará diretamente paradashbord page(dashboard.html)
, mas quando eu pressionobrowser back button
, em vez de ir para a página anterior, ela abrelogin page(login_admin.html)
. O cenário é o seguinte:
localhost: 8080 -> abre -> login_admin.html (alcançado).
inserir credencial e enviar -> abre -> dashboard.html (alcançado).
ao inserir o mesmo URL (localhost: 8080) em uma guia diferente (suponha facebook.com aberto anteriormente) ---> abre -> dashbord.html (alcançado).
ao pressionar o botão Voltar do navegador, em vez de irfacebook.com
, abre login_admin.html (não resolvido). sugerir alguma solução, por favor.
meu código js é o seguinte:
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;
})