4

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

是否有必要进行一些设置或配置以使身份验证令牌寿命更长?我不一定在谈论“记住我”功能,而是说让单个会话更难一些。

我的基本代码:

授权对象:

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>
4

2 回答 2

2

ember-auth开发人员在这里。

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

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

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

于 2013-07-08T12:31:27.253 回答
2

是否有必要进行一些设置或配置以使身份验证令牌寿命更长?我不一定在谈论“记住我”功能,而是说让单个会话更难一些。

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

于 2013-07-05T22:01:17.107 回答