![](/img/trans.png)
[英]How to redirect user to another page once he has clicked the browser back button in JavaScript
[英]restrict the redirection to login page once the user has already logged in even if he press the back button of browser in angular?
我想创建一个登录页面来检查条件,然后用户将被重定向到主页,现在我要实现一个条件,即当用户访问主页并且他单击“后退”按钮或浏览器时,他应该无法再次访问登录页面。 我试图将变量isLogged in设置为false,并在检查了用户名和密码后将该变量设置为true并将其存储在本地存储中,并像flag一样使用它,但是我无法正确获取错误之处。
这是我的app.js
var validationApp = angular.module('validationApp',['ngRoute','ngStorage']);
var loggedIn = false;
validationApp.run(function($rootScope, $localStorage){
//var loggedIn = false;
//if(!loggedIn) {
storage = window.localStorage;
//storage.setItem("loggedIn", true);
//console.log(storage.getItem("loggedIn"));
// $rootScope.$storage = $localStorage.$default({
// loggedIn: false
// })
// }
});
validationApp.controller('mainController', function($scope,loginservice,$localStorage) {
$scope.dologin = function () {
//storage.setItem("loggedIn" ,true);
//loginsucess = storage.getItem("loggedIn");
if(loggedIn == false) {
//console.log(loginsucess);
if ($scope.userForm.$valid) {
loginservice.login($scope.user.email, $scope.user.password);
}
storage.setItem("loggedIn", true);
}
}
});
我也尝试在路线中添加检查条件,现在即使获得有效的凭据也无法获得主页。
validationApp.config(
function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'main.html',
controller: 'mainController'
})
.when('/home', {
templateUrl: 'home.html',
resolve:{
"check":function($location){
if(storage.getItem(loggedIn) == true)
{
alert(loggedIn);
$location.path("/home");
}
else
{
$location.path("/main");
}
}
},
controller: 'mainController'
})
.otherwise({
redirectTo: '/'
});
});
validationApp.service('loginservice',function($location)
{
this.login = function(username, password){
console.log(username,password);
if(username == "ank@gmail.com" && password=="1234")
{
//alert('thank you for submitting your form');
$location.path("/home");
//console.log(storage.getItem("loggedIn"));
}
else
{
//alert("invalid username and password");
$location.path("/main");
}
}
});
请参见工作示例: http : //plnkr.co/edit/46O0znC5HFDE4cYXSm5h?p=preview
在登录功能中存储在cookie中的数据如下:
$cookies.userinfo = {
'id': 1,
'name': 'pqr'
};
在注销时删除该数据-
delete $cookies.userinfo;
然后查找“ angular.isDefined($ cookies.userinfo)”(userinfo是在其中存储数据时给定的cookie名称)是否找到,然后将其重定向到登录后要查看的页面。 即
app.run(function ($cookies) {
$rootScope.$on("$routeChangeStart", function () {
if (angular.isDefined($cookies.userinfo)) {
$location.path("/pathname");
}
});
});
看看这是否符合您的目的
var validationApp = angular.module('validationApp', ['ngRoute','ngStorage']);
var loggedIn = false;
validationApp.run(function($rootScope, $localStorage, $location){
storage = window.localStorage;
$rootScope.$on("$routeChangeStart", function (evt, next, current) {
if(storage.getItem(loggedIn) == true) {
if (next.$$route.originalPath == '/login')
$location.path('/home');
}
else
$location.path('/login');
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.