Ember Auth用户持久性

时间:2013-07-05 21:41:14

标签: api authentication ember.js

所以我有一个使用身份验证API设置的ember-rails应用程序,我可以成功(或不)​​使用ember auth进行身份验证,一切正常。但是,身份验证仅在当前应用程序会话期间持续存在。如果我重新加载页面或输入URL,我必须重新进行身份验证。

是否需要一些设置或配置才能使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'

验证模板:

<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 个答案:

答案 0 :(得分:2)

  

是否需要一些设置或配置才能使auth令牌更长久?我不一定在谈论&#34;记住我&#34;功能,就像让一个会话更加强大。

您可以将身份验证令牌保存到Cookie或本地存储中。但我不推荐它。这就是ember-auth内置的记忆功能的用途。 http://ember-auth.herokuapp.com/docs

答案 1 :(得分:2)

ember-auth dev这里。

你的用例基本上是默认的“记住我”,但持续时间很短。您仍然可以启用rememberable(启用自动调用),只需“静默选择加入”此功能,即只要登录有效,您的服务器就会返回记住Cookie。

背后的原因是,从ember应用程序的角度来看,无法区分浏览器重启,网址更改和刷新。所有这些都代表了应用重启。由此,ember需要从保存的信息(cookies,localStorage)和传递的信息(url)恢复应用程序状态。身份验证会话也不例外。 rememberable模块将身份验证令牌保存在前者中(您选择cookielocalStorage); urlAuthenticatable模块允许您在网址中传递身份验证信息。

正如迈克所说,你也可以自己动手,但我会建议你利用现有的功能(“其他人的努力”)。