我想创建一个检查条件的登录页面,然后用户被重定向到主页,现在我想实现一个条件,当用户访问主页并点击后退按钮或浏览器时,他应该&#39 ; nt能够再次访问登录页面。我试图将变量isLogged设置为false并在检查用户名和密码后将该变量设置为true并将其存储在本地存储中并像旗帜一样使用它,但我无法正确地找到错误的位置。< / p>
这是我的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");
}
}
});
答案 0 :(得分:0)
请参阅工作示例:http://plnkr.co/edit/46O0znC5HFDE4cYXSm5h?p=preview
登录功能中的cookie存储数据如下,
$cookies.userinfo = {
'id': 1,
'name': 'pqr'
};
在注销时删除该数据 -
delete $cookies.userinfo;
然后检查&#39; angular.isDefined($ cookies.userinfo)&#39; (userinfo是在存储数据时给出的cookie名称)如果找到然后将其重定向到您想要在登录后看到的页面。即
app.run(function ($cookies) {
$rootScope.$on("$routeChangeStart", function () {
if (angular.isDefined($cookies.userinfo)) {
$location.path("/pathname");
}
});
});
答案 1 :(得分:0)
看看这是否符合你的目的
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');
});
});