2013-07-05 3 views
4

У меня есть приложение ember-rails, настроенное с помощью API аутентификации, и я могу успешно (или не) аутентифицироваться с помощью ember auth, и все работает. Однако аутентификация сохраняется только в течение текущего сеанса приложения. Если я перезагрузите страницу или введите URL-адрес, я должен повторно аутентифицироваться.Уязвимость пользователя Ember Auth

Есть ли какие-либо настройки или настройки, необходимые для того, чтобы токен авторизации был более продолжительным? Я не обязательно говорю о функциональности «Помни меня», так как сделать сеанс несколько более жестким.

Мой базовый код:

Auth Объект:

App.Auth = Em.Auth.create 
    currentUser: null 
    signInEndPoint: '/users/sign_in' 
    signOutEndPoint: '/users/sign_out' 
    tokenKey: 'auth_token' 
    tokenIdKey: 'user_id' 

Вход Вид:

App.AuthSignInView = Ember.View.extend 
    templateName: 'auth/sign_in' 

    email: null 
    password: null 

    submit: (event, view) -> 
    event.preventDefault() 
    event.stopPropagation() 
    StripfighterEmber.Auth.signIn 
     data: 
     email: @get 'email' 
     password: @get 'password' 

Auth Шаблон:

<form class="form-inline"> 
    {{view Ember.TextField class="input-small" placeholder="Email" valueBinding="view.email"}} 
    {{view Ember.TextField type="password" class="input-small" placeholder="Password" valueBinding="view.password"}} 
    <button type="submit" class="btn btn-inverse btn-small">Sign in</button> 
</form> 

ответ

2

ember-auth dev здесь.

Ваш прецедент по существу является дефолтом «запомнить меня», но с очень короткой продолжительностью. Вы все равно можете включить rememberable (с автовосстановлением) и просто «тихо входить» в эту функцию, т. Е. Заставить ваш сервер возвращать куки-файл с сохранением при условии, что знак действителен.

Причина этого заключается в том, что с точки зрения ember-приложения нет возможности различать перезапуск браузера, изменение URL-адреса и обновление. Все это представляет собой перезапуск приложения. Из этого следует, что ember необходимо восстановить состояние приложения из сохраненной информации (cookies, localStorage) и передать информацию (url). Сеанс аутентификации ничем не отличается. Модуль rememberable сохраняет токен аутентификации в первом (вы выбираете cookie или localStorage); модуль urlAuthenticatable позволяет передавать информацию об аутентификации в URL-адресе.

Как сказал Майк, вы также можете опрокинуть свои собственные, но я бы посоветовал вам воспользоваться существующими функциями («усилия других людей»).

+0

Благодарим за помощь. Если у меня есть быстрое наблюдение, пока я обращаю ваше внимание, у emberAuth в настоящее время есть помощник currentUser, как упоминалось в номере № 11, или я должен сделать свой собственный аксессор для этой информации? – DVG

+1

В настоящее время это 'App.Auth.get ('user')' (javascript)/'App.Auth.user' (ember-handlebars). Он будет заполнен, если вы выберете (то есть установите) конфигурацию 'userModel'. В [docs] (http://ember-auth.herokuapp.com/) есть демонстрация. – heartsentwined

+1

Обновление для googlers: приведенный выше синтаксис изменился в '9.x'. вы теперь устанавливаете 'userModel' внутри' emberData', 'epf' или' emberModel', в зависимости от того, какой модуль интеграции persistence lib вы используете. Объект 'auth' также был введен в маршруты, контроллеры и представления, поэтому теперь вы получаете доступ к нему через' this.get ('auth') 'внутри любого из них и' {{auth.user}} 'в дескрипторах шаблоны. – heartsentwined

2

Есть ли какие-то настройки или настройки, необходимые для того, чтобы токен авторизации был более продолжительным? Я не обязательно говорю о функциональности «Помни меня», так как сделать сеанс несколько более жестким.

Вы можете сохранить токен аутентификации в файл cookie или локальное хранилище. но я бы не рекомендовал его. Это то, что для меня имеет встроенная функция ember-auth. http://ember-auth.herokuapp.com/docs

Смежные вопросы