cómo evitar mostrar la página de inicio de sesión después de que el usuario haya iniciado sesión y presione el botón Atrás del navegador sin usar el marco iónico
Soy nuevo en la plataforma anglularjs. Estoy creando unlog-in application
. Me enfrento a un problema en el que todas las cosas van bien, pero me quedé atascado para administrar que si el usuario ya está conectado e intenta abrir la misma URL en una pestaña diferente, redirige al usuario directamente adashbord page(dashboard.html)
, pero cuando presionobrowser back button
, en lugar de ir a la página anterior, se abrelogin page(login_admin.html)
. El escenario es el siguiente:
localhost: 8080 -> se abre -> login_admin.html (logrado).
ingresando credencial y al enviar -> abre -> dashboard.html (logrado).
al ingresar la misma url (localhost: 8080) en una pestaña diferente (supongamos que se abrió previamente facebook.com) ---> abre -> dashbord.html (logrado).
al presionar el botón de retroceso del navegador, en lugar de irfacebook.com
, abre login_admin.html (sin resolver). sugiera alguna solución por favor.
mi código js es el siguiente:
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;
})