Redirecionando para uma determinada rota com base na condição

Estou escrevendo um pequeno aplicativo AngularJS que possui uma visualização de login e uma visualização principal, configurada da seguinte forma:

$routeProvider
 .when('/main' , {templateUrl: 'partials/main.html',  controller: MainController})
 .when('/login', {templateUrl: 'partials/login.html', controller: LoginController})
 .otherwise({redirectTo: '/login'});

Meu LoginController verifica a combinação user / pass e define uma propriedade no $ rootScope refletindo isso:

function LoginController($scope, $location, $rootScope) {
 $scope.attemptLogin = function() {
   if ( $scope.username == $scope.password ) { // test
        $rootScope.loggedUser = $scope.username;
        $location.path( "/main" );
    } else {
        $scope.loginError = "Invalid user/pass.";
    }
}

Tudo funciona, mas se eu acessarhttp://localhost/#/main Eu acabo ignorando a tela de login. Eu queria escrever algo como "sempre que a rota muda, se $ rootScope.loggedUser é nulo, então redirecione para / login"

...

... esperar. Posso ouvir as alterações de rota de alguma forma? Vou postar esta questão e continuar procurando.

questionAnswers(11)

yourAnswerToTheQuestion