Angularjs 我想创建一个路由,在登录时自动将用户重定向到主页
下面的代码描述了我的app.js文件Angularjs 我想创建一个路由,在登录时自动将用户重定向到主页,angularjs,node.js,Angularjs,Node.js,下面的代码描述了我的app.js文件 (function () { 'use strict'; angular .module('app', ['ngRoute', 'ngCookies']) .config(config) .run(run); config.$inject = ['$routeProvider', '$locationProvider']; function config($routeProvider, $locationProvider) {
(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' });
}
})();
下面的一个描述了我的login controller.js文件:我编写了这个路由,用于将注册用户登录到数据库,并在用户名和密码正确后创建令牌。我现在想要的是创建一个自动路由,一旦密码和用户名正确,就会将用户重定向到主页
(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);
});
}
})
})();
以下是登录控制器文件的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>
登录
用户名
用户名是必需的
密码
密码是必需的
登录
您可以使用run方法在登录时将用户重定向到主页。 你可以检查,即使有任何时候,路线改变和重定向他到正确的地方
$scope.$on('$routeChangeStart', function (event, next, current) {
//add your logic here. if user next contains next route.
});
如果您只想将用户重定向到主页。如果您想要用户ID作为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);
});
}
$scope.login = function(user) {
Users1.logUser(user).then(function(doc) {
var userUrl = "/" + doc.data.id;
$location.path(userUrl);
}, function(response) {
alert(response);
});
}