首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AngularJS-在每个路由和控制器中进行登录和身份验证

AngularJS-在每个路由和控制器中进行登录和身份验证
EN

Stack Overflow用户
提问于 2014-01-07 18:56:38
回答 10查看 220.7K关注 0票数 132

我有一个用yeoman,grunt和bower创建的AngularJS应用程序。

我有一个登录页面,它有一个检查身份验证的控制器。如果凭据是正确的,我会重新路由到主页。

app.js

代码语言:javascript
复制
'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

代码语言:javascript
复制
'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";
        }
    }
});

在我的主页上

代码语言:javascript
复制
<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,但我不知道如何使用它们。

我看到的许多示例都不是很清楚,它们使用了某种访问角色或其他什么。我不想这样。我只想要一个登录过滤器。有没有人能给我一些建议?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20969835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档