2015-02-10 2 views
0

Я пытаюсь проверить подлинность входа пользователя и предотвратить их доступ к определенным маршрутам, если они не вошли в систему У меня есть следующий код:.

var isUserLoggedIn = function($q, $timeout, $http, $Location, $rootScope) { 
    // Initialize a new promise. 
    var deferred = $q.defer(); 

    // Check is user is logged in 
    $http.get('/isLoggedIn').success(function(user) { 
    if(user !== '0') { // User is logged in 
     deferred.resolve(); 
    } else { // Use is not logged in 
     $rootScope.message = 'You need to log in.'; 
     deferred.reject(); 
     $location.url('/login'); 
    } 
    }); 

    return deferred.promise; 
}; 

$routeProvider 
    .when('/', { 
    templateUrl: 'partials/index', 
    controller: 'IndexCtrl' 
    }) 
    .when('/registerUser', { 
    templateUrl: 'partials/registerUser', 
    controller: 'RegisterUserCtrl' 
    }) 
    .when('/login', { 
    templateUrl: 'partials/login', 
    controller: 'LoginCtrl' 
    }) 
    .when('/userProfile', { 
    templateUrl: 'partials/userProfile', 
    controller: 'UserProfileCtrl', 
    resolve: { 
     loggedin: isUserLoggedIn 
    } 
    }) 
    .otherwise({ 
    redirectTo: '/' 
    }); 

Для контроллера у меня есть

angular.module('enigmaApp.controllers', []) 
.controller('UserProfileCtrl', ['$scope', 'loggedin', function($scope, loggedin) { 
    $scope.name = "john doe"; 
    $scope.loggedin = loggedin; 
}]); 

Однако я получаю следующую ошибку при попытке получить доступ к маршруту/userProfile.

Ошибка: [$ Инжектор: unpr] Неизвестный поставщик: $ LocationProvider < - $ Расположение < - LoggedIn

После поиска через кучу ответов на здесь, кажется, этот вопрос для большинства людей используют нг-контроллер в их взгляды, однако я не использую это. Мои взгляды нефритовые ниже:

Layout.jade

<!DOCTYPE html> 
html(ng-app="enigmaApp", lang="en") 
    head 
     meta(charset='utf8') 
     meta(name='viewport', content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no') 
     base(href='/') 
     title Enigma base platform 
     link(rel='stylesheet', href='/css/app.css') 
     link(rel="stylesheet", href='//maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css') 
    body 
     div.content-wrapper 
      block body 

index.jade

extends layout 

block body 
    div.user.f-right(ng-controller='NavCtrl') 
    a(href="/") Home 
    | | 
    a(href='/login') Login 
    | | 
    a(href='registerUser') Register 
    | | 
    a(href='/logout', target='_self') Logout 
    | | 
    a(href='/userProfile') User Profile 
    h1 Enigma Health 

    div(ng-view) 

userProfile.jade

h3 Welcome {{name}}! 
+0

Вы пытались изменить '$ Location' на' $ location'? – juunas

+0

Хороший глаз! Это была проблема. часы, потраченные впустую на письмо в капитолии * вздох * – efarley

+0

Я добавлю это как ответ :) – juunas

ответ

1

Как я уже говорил в комментариях, изменение $Location к $location исправил проблему.

Смежные вопросы