2

I am building a single-page-application with a passport local authentication. The user is authenticated and returned within app.post "/login" After the userobject is returned I save it in Chaplin.mediator.user (like seen in the facebook-example). As long as I don't change the URL manually everything works fine, but when I change the URL and hit enter, the application gets loaded again however with a different route --> no user in the front end.

What I am doing right now is everytime I change the route manually I send a request to the server and ask for the user in req.user. After receiving the user the application continues its workflow. It works but I don't think this is how it's meant to be. If you don't wait for the response you end up having no user object although you are logged in.

How can I solve this problem?

EDIT: I ended up saving the user in a seperate cookie. This is how I save the user:

  $.cookie.json = true;
  $.cookie 'user', user.toJSON()

And this is how I extract the user after the page was loaded:

  userCookie = $.cookie 'user'
  if userCookie?
    mediator.user = new Model JSON.parse userCookie

You need the jquery-cookie plugin to make it work. Don't forget to delete the cookie if the user logs out. And of course I am still open to other ideas.

laggingreflex
  • 32,948
  • 35
  • 141
  • 196
Kuno
  • 3,492
  • 2
  • 28
  • 44

1 Answers1

1

You should store the user (aka the session) locally. When the Backbone application loads, you should then route the user to the correct place if they in fact are already logged in.

Andrew Hubbs
  • 9,338
  • 9
  • 48
  • 71