試圖將未經過身份驗證的用戶重定向到登錄屏幕。
我使用ui.route
r和指令來檢查記錄的用戶。但它沒有按我的預期工作。它在頁面加載之前沒有檢查,並且在持續重定向的頁面上卡住了。
路由配置:
//User profile
.state('UserProfile', {
url: "/u/:id",
data: {
restrict: true,
name: "Your Profile",
header: true,
footer: false,
css: true,
transparentHeader: true
},
templateUrl: "app/partials/user/userProfile.html",
controller: "userProfileController"
})
//Login page for not authenticated users
.state('LoginPage', {
url: "/login/",
data: {
restrict: false,
name: "Login",
header: false,
footer: false,
css: false,
transparentHeader: false
},
templateUrl: "app/partials/common/loginPage.html",
controller: "loginController"
})
服務:
.factory('userService', ['$cookies', function($cookies){
var userData = {
isLogged: false,
userId: "",
firstName: "",
profilePic: ""
};
return userData;
}]);
指令:
socialMarkt.directive('checkUser', ['$rootScope', '$state', 'userService', function ($r, $state, userService) {
return {
link: function (scope, elem, attrs, ctrl) {
$r.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams, options){
event.preventDefault();
if($state.current.data.restrict){
if(!userService.isLogged){
$state.go('LoginPage');
}
}
});
}
}
}]);
我只是把它添加到一個頁面進行測試。所以如果用戶沒有登錄,據說它會使用$state.go('LoginPage')
重定向到登錄頁面。
其中國家 'LoginPage' 定義? –
@CarlosBarcelona LoginPage是在$ stateProvider下定義的.config –