Im有點卡住了,我一直無法找到解決方案。我有一個rails站點,它使用devise作爲前端,devise_token_auth作爲api。前端使用服務器端渲染頁面和API調用的組合來向用戶顯示數據。 登錄表單將eventally工作(ushally 2-3的提交)如果我使用純角登錄:Devise,devise_token_auth和ng-token-auth身份驗證問題
%div{'ng-controller'=>'logInCtrl'}
%h2 Log In
%div{:layout=>'column'}
%div{:flex=>20}
%div{:flex=>60, :layout=>'column'}
= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
%div{:layout=>'column'}
%md-input-container
=f.label :login
%input{'ng-model'=>'loginForm.login', :autofocus => 'true'}
%md-input-container
= f.label :password
%input{:type=>'password', 'ng-model'=>'loginForm.password', :autocomplete => 'off'}
%md-input-container
%md-button.md-raised.md-primary{'ng-click'=>'submitMe()'}
-#{:type=>'submit'}
%md-icon.mdi.mdi-account-key
Log In
:coffee
myApp.controller 'logInCtrl', ($scope, $resource, $http, $mdDialog, $auth) ->
$scope.submitMe =() ->
$auth.submitLogin($scope.loginForm).then((resp)->
location.replace('/users/sign_in')
)
如果我使用標準交方法正確的信息由服務器渲染,但沒有令牌集合爲ng-token-auth
。我可以手動生成和發送令牌頭會話#創建使用:
# POST /resource/sign_in
def create
super do |user|
newAuth = user.create_new_auth_token
response.headers.merge!(newAuth)
end
end
,我有這種方法的問題是,NG-令牌身份驗證從未拿起從因爲它沒有頭的令牌提出請求。我已經尋找了一種手動設置令牌頭的方法,但沒有運氣。
- 作爲一方,我不會最終轉向oauth解決方案,所以無論我使用哪種解決方法都需要移植到該解決方案。 - 我應該提到服務器端渲染負責設計元素以及打開和關閉功能。我還使用current_user的一個元素根據用戶位置設置表名的子集。