Наверное вам нужно отталкиваться от fronted фреймворка который вы используете.
Я в проектах работаю с
Ember.js, а для авторизации библиотеку
ember-simple-auth.
В ней можно использовать готовые модули для авторизации: devise, torii, oauth2 или написать кастомный авторизатор под свой сервер (я так и делаю). Токен можно хранить в localStorage или в cookie.
Вот
пример кастомной авторизации, как видно ничего страшного.