我有一个用yeoman,grunt和bower创建的AngularJS应用程序。
我有一个登录页面,它有一个检查身份验证的控制器。如果凭据是正确的,我会重新路由到主页。
app.js
'use strict';
//Define Routing for app
angular.module('myApp', []).config(['$routeProvider', '$locationProvider',
function($routeProvider,$locationProvider) {
$routeProvider
.when('/login', {
templateUrl: 'login.html',
controller: 'LoginController'
})
.when('/register', {
templateUrl: 'register.html',
controller: 'RegisterController'
})
.when('/forgotPassword', {
templateUrl: 'forgotpassword.html',
controller: 'forgotController'
})
.when('/home', {
templateUrl: 'views/home.html',
controller: 'homeController'
})
.otherwise({
redirectTo: '/login'
});
// $locationProvider.html5Mode(true); //Remove the '#' from URL.
}]);
angular.module('myApp').factory("page", function($rootScope){
var page={};
var user={};
page.setPage=function(title,bodyClass){
$rootScope.pageTitle = title;
$rootScope.bodylayout=bodyClass;
};
page.setUser=function(user){
$rootScope.user=user;
}
return page;
});
LoginControler.js
'use strict';
angular.module('myApp').controller('LoginController', function($scope, $location, $window,page) {
page.setPage("Login","login-layout");
$scope.user = {};
$scope.loginUser=function()
{
var username=$scope.user.name;
var password=$scope.user.password;
if(username=="admin" && password=="admin123")
{
page.setUser($scope.user);
$location.path( "/home" );
}
else
{
$scope.message="Error";
$scope.messagecolor="alert alert-danger";
}
}
});
在我的主页上
<span class="user-info">
<small>Welcome,</small>
{{user.name}}
</span>
<span class="logout"><a href="" ng-click="logoutUser()">Logout</a></span>
在loginController
中,我检查登录信息,如果成功,就在服务工厂中设置user对象。我不知道这是对是错。
我需要的是,当用户登录时,它在user对象中设置一些值,以便所有其他页面都可以获得该值。
每当发生任何路由更改时,控制器都应该检查用户是否登录。如果不是,它应该重新路由到登录页面。此外,如果用户已经登录并返回到页面,它应该转到主页。控制器还应该检查所有路由上的凭证。
我听说过ng-cookie,但我不知道如何使用它们。
我看到的许多示例都不是很清楚,它们使用了某种访问角色或其他什么。我不想这样。我只想要一个登录过滤器。有没有人能给我一些建议?
https://stackoverflow.com/questions/20969835
复制相似问题