What is the proper way to log in users using Angular & Express?

前端 未结 2 1199
执笔经年
执笔经年 2021-01-30 14:16

I\'m building a simple web site where I\'d like to let users log in using Facebook, and then show a page with customized items based on whether or not they\'re logged in. ie if

相关标签:
2条回答
  • 2021-01-30 14:45

    I don't use node.js and express, but rather securesocial for the play! framework, but I assume the process is similar.

    You need to create a service that contacts the server for user login status and then store this variable. You can then inject this service into each controller that needs to be aware or alter your users login status.

    This blog is where I got my implementation from: http://blog.brunoscopelliti.com/deal-with-users-authentication-in-an-angularjs-web-app

    Here's the service :

    services.factory('UserService', [function() {
        var sdo = {
            isLogged: false,
            username: ''
        };
        return sdo;
    }]);
    

    Here's an example of logging in a user in a controller

    var User = UserService
    scope.login = function() {
        var config = { /* ... */ } // configuration object
    
        $http(config)
        .success(function(data, status, headers, config) {
            if (data.status) {
                // succefull login
                User.isLogged = true;
                User.username = data.username;
            }
            else {
                User.isLogged = false;
                User.username = '';
            }
        })
        .error(function(data, status, headers, config) {
            User.isLogged = false;
            User.username = '';
        });
    }
    

    I would really recommend you read the blog article as it covers this in more detail and there's a few other related articles

    You can then use the User.isLogged variable to hide or display different elements as well as using it to determine which routes are available

    0 讨论(0)
  • 2021-01-30 14:47

    To complete the @wpalahnuk answer you have to create a service or factory to deal the authentication and an httpInterceptor to intercept the response send by the server for know if the user is log or not (checking the staus code 401).

    For the Express part you have to use the awesome passport node module to deal the server side authentication.

    You have all the details here : https://vickev.com/#!/article/authentication-in-single-page-applications-node-js-passportjs-angularjs

    This article is really great, Brad Green (Engineering Director at Google for AngularJS) adivse me this post.

    Hope it Helps.

    If you want to know more things about security in Angular you have just to ask and i'll we be really happy to help you.

    0 讨论(0)
提交回复
热议问题