2013-07-05 95 views
4

所以我有一個使用身份驗證API設置的ember-rails應用程序,並且我可以成功(或不能)使用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' 

驗證模板:

<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 here。

你的用例本質上是一個默認的「記住我」,但持續時間很短。您仍然可以啓用rememberable(啓用自動回憶功能),並且只是「默默選擇加入」此功能,即只要登錄有效,就讓您的服務器返回記住的Cookie。

這背後的原因是,從一個應用程序的角度來看,沒有辦法區分瀏覽器重新啓動,URL更改和刷新。所有這些都表示應用程序重啓。由此,燼需要從保存的信息(cookies,localStorage)和傳遞的信息(url)中恢復應用狀態。認證會話沒有什麼不同。 rememberable模塊將身份驗證令牌保存在前者(您選擇,cookielocalStorage); urlAuthenticatable模塊可讓您傳遞URL中的身份驗證信息。正如邁克所說,你也可以推出自己的產品,但我建議你利用現有的功能(「其他人的努力」)。

+0

謝謝你的幫助。如果我可能需要快速跟進,請注意,emberAuth目前是否擁有第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'中更改。您現在在'emberData','epf'或'emberModel'中設置'userModel',具體取決於您使用的持久性lib集成模塊。 'auth'對象也被注入到了路由,控制器和視圖中,所以你現在可以通過'this.get('auth')'在任何這些內部進行訪問,並且在手柄條中使用'{{auth.user}}''模板。 – heartsentwined

2

是否需要某些設置或配置才能使驗證令牌更長久?我不一定在談論「記住我」的功能,就像讓單個會話更難一些。

您可以將身份驗證令牌保存到Cookie或本地存儲。但我不會推薦它。這就是內建在ember-auth中的記憶功能。 http://ember-auth.herokuapp.com/docs