我想创build一个path,以便在login时自动将用户redirect到主页

下面的代码描述了我的app.js文件。

(function () { 'use strict'; angular .module('app', ['ngRoute', 'ngCookies']) .config(config) .run(run); config.$inject = ['$routeProvider', '$locationProvider']; function config($routeProvider, $locationProvider) { $routeProvider .when('/', { controller: 'HomeController', templateUrl: 'home/home.view.html', controllerAs: 'vm' }) .when('/users/login', { controller: 'LoginController', templateUrl: 'login/login.view.html', controllerAs: 'vm' }) .when('/register', { controller: 'RegisterController', templateUrl: 'register/register.view.html', controllerAs: 'vm' }) .otherwise({ redirectTo: '/users/login' }); } })(); 

下面的代码描述了我的logincontroller.js文件:我写了这个路由用于login到数据库的注册用户和创build令牌一旦用户名和密码是正确的。 我现在想要的是创build一个自动路由,一旦密码和用户名是正确的,将用户redirect到主页。

 (function () { 'use strict'; angular .module('app') .service('Users1', function($http) { this.logUser = function(user) { return $http.post("/users/login", user). then(function(response) { return response; }, function(response) { alert("Error logging in user."); }); } }) // .controller('RegisterController', RegisterController); .controller("LoginController", function($scope, $location, Users1) { $scope.back = function() { $location.path("/users/login"); } $scope.login = function(user) { Users1.logUser(user).then(function(doc) { var userUrl = "/" + doc.data.id; $location.path(userUrl); }, function(response) { alert(response); }); } }) })(); 

以下是login控制器文件的html文件:

 <div class="col-md-6 col-md-offset-3"> <h2>Login</h2> <form name="form" role="form"> <div class="form-group" ng-class="{ 'has-error': form.username.$dirty && form.username.$error.required }"> <label for="username">Username</label> <input type="text" name="username" id="username" class="form-control" ng-model="user.username" required /> <span ng-show="form.username.$dirty && form.username.$error.required" class="help-block">Username is required</span> </div> <div class="form-group" ng-class="{ 'has-error': form.password.$dirty && form.password.$error.required }"> <label for="password">Password</label> <input type="password" name="password" id="password" class="form-control" ng-model="user.password" required /> <span ng-show="form.password.$dirty && form.password.$error.required" class="help-block">Password is required</span> </div> <div class="form-actions"> <button type="submit" ng-disabled="form.$invalid || vm.dataLoading" class="btn btn-primary" ng-click="login(user)">Login</button> <a href="#/register" class="btn btn-link">Register</a> </div> </form> 

 $scope.login = function(user) { Users1.logUser(user).then(function( $location.path("/"); }, function(response) { alert(response); }); } 

如果你只是想将用户redirect到主页。 如果你想用url作为urlParams,那么你应该去这个

 .when('/:id', { controller: 'HomeController', templateUrl: 'home/home.view.html', controllerAs: 'vm' }) 

和控制器

 $scope.login = function(user) { Users1.logUser(user).then(function(doc) { var userUrl = "/" + doc.data.id; $location.path(userUrl); }, function(response) { alert(response); }); } 

你可以使用run方法在登陆时将用户redirect到home。 您甚至可以检查是否有路线改变,并将其redirect到正确的位置。

 $scope.$on('$routeChangeStart', function (event, next, current) { //add your logic here. if user next contains next route. });