How should I pass user's login status to my Ember.js application?

后端 未结 1 786
萌比男神i
萌比男神i 2021-02-06 13:14

I have an interactive Ember app which has a lot of options which are available only to signed in users. For example there might be a list of posts, and then there\'s another lin

相关标签:
1条回答
  • 2021-02-06 13:25

    If you are using the ember router, then my suggestion would be to architect a solution like this

    LoginController

    App.LoginController = Ember.Controller.extend({
        login: function(params){ /* Your logic here */ },
        logout: function(params){ /* Your logic here */},
    
        user_data_hash: { first_name: "The", last_name: "Hobbit"},
    
        is_logged_in: (function() {
            /* do some logic and return true or false */
        }).property('some_item_on_user_data_hash')
    
        just_logged_in: (function() {
            /* do some logic and return true or false */
        }).property('some_item_on_user_data_hash')
    

    Then in your router before you allow navigation to a protected route, you check with the LoginController object. This example is take from this answer.

    root: Ember.Route.extend({
        index: Ember.Route.extend({
            enter: function(router) {
                var logged_in = router.get('loginController.is_logged_in'); /*Or in older ember builds `router.getPath('loginController.is_logged_in');`*/
                var just_logged_in = router.get('loginController.just_logged_in'); /*Or in older ember builds `router.getPath('loginController.just_logged_in');`*/
                Ember.run.next(function() {
                    if (logged_in && just_logged_in) {
                        router.transitionTo('loggedIn');
                    } else if (!logged_in) {
                        router.transitionTo('loggedOut');
                    }
                });
            }
        }),
    
        loggedIn: Ember.Route.extend({
            // ...
        }),
    
        loggedOut: Ember.Route.extend({
            // ...
        })
    })
    
    0 讨论(0)
提交回复
热议问题