我正在开发一个网站,只有两页。
我正在使用角度framweork。
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
// Home
.when("/login", {templateUrl: "partials/login.html", controller: "LoginCtrl",cache:false})
.when("/newNotification", {templateUrl: "partials/about.html", controller: "NewNotificationCtrl",cache:false})
.otherwise({
redirectTo: '/login'
});
}]);
但是当有人在没有登录的情况下键入website / newNotification时,它正在打开该页面。如果用户直接打开第二页网址,如何限制用户登录页面?
答案 0 :(得分:1)
你可以使用 stateChangeStart
来实现 $rootScope.$on('$stateChangeStart', function(event, toState) {
if ( toState.name !== 'login') {
$rootScope.token = localStorage.get('user');
if ($rootScope.token === null) {
event.preventDefault();
$rootScope.goTo('login');
}
} else if (toState.name === 'login') {
$rootScope.token = localStorage.get('user');
if ($rootScope.token !== null) {
event.preventDefault();
$rootScope.goTo('home');
}
}
});
答案 1 :(得分:0)
使用localStorage
是我最喜欢的解决方案。当用户登录时,请在username
中保存password
和localStorage
并重定向到您的主页。如果他们退出或关闭页面,您将删除localStorage
,当加载主页时,您将检查localStorage
项:
if(localStorage.getItem("username")!=null && localStorage.getItem("password")!=null){
driverLogin();
}
答案 2 :(得分:0)
可能的解决方案是在每个页面打开之前检查用户是否已登录,如果用户未登录,则重定向到登录页面。
app.run(function($rootScope, $location) {
$rootScope.$on( "$routeChangeStart", function(event, next, current) {
if (!$rootScope.isLoggedIn) {
// no logged user, redirect to /login
$location.path("/login");
}
}
});
在您的身份验证服务中:
app.service('AuthService', function($rootScope, $http) {
return {
this.login = function() {
// Send $http request for login
$http.post(url, loginData)
.success(function(res) {
$rootScope.isLoggedIn = true;
})
.error(function() {
// Handle request error
});
}
};
});