私は1つのアクセストークンを使用しており、ログアウト時にリセットしたいと考えています。デベロッパー:ログアウト後にトークンをリセットする
可能な方法は、reset_authentication_tokenを呼び出すことです。モデルのafter_token_authenticationで、それから私はそれがモデルのsign_outアクションであることを知る必要があります。
どのようにすればよいでしょうか? 私はdeviseを使用しています。1.3.4
ありがとうございました。
私は1つのアクセストークンを使用しており、ログアウト時にリセットしたいと考えています。デベロッパー:ログアウト後にトークンをリセットする
可能な方法は、reset_authentication_tokenを呼び出すことです。モデルのafter_token_authenticationで、それから私はそれがモデルのsign_outアクションであることを知る必要があります。
どのようにすればよいでしょうか? 私はdeviseを使用しています。1.3.4
ありがとうございました。
アプリケーションコントローラの「after_sign_out_path_for」をオーバーライドしてそこにトークンをリセットするだけです。独自のSessionControllerを書く必要はありません(Nathanが述べたように非常に簡単ですが)。 (Object)をafter_sign_out_path_for(resource_or_scope)ユーザーをサインアウトするセッションコントローラが使用
方法 - http://rubydoc.info/gems/devise/1.3.4/frames :
は、ここでは、使用すべき方法です。 ApplicationControllerで上書きして、カスタムスコープのカスタムフックを提供することができます。 after_sign_in_path_forとは異なり、このメソッドはリソースではなくスコープを持つシンボルを受け取ります。
デフォルトでは、root_pathです。
歓声
ここでは、トークンの追加/リセットに追加した、本当に良いblog postです。
もちろんこれは単なる例であり、彼がビューで呼び出すリンクはトークンを作成/破棄することです。ただし、これらの同じパスをコントローラで同じエフェクトで使用できます。
私は同じ問題を抱えていました。これは私が見つけたものです:私のSessionsController <工夫で
Devise Wiki: simple token authentication example
Devise Wike: simple token authentication links
:: SessionsController私は破壊する方法(工夫担当者から1を取り、それを変更された)
def destroy
token_was_removed = remove_current_users_token_if_json_request
redirect_path = after_sign_out_path_for(resource_name)
signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
set_flash_message :notice, :signed_out if signed_out && is_navigational_format?
respond_with resource do |format|
format.html { redirect_to static_pages_login_path }
format.json {
if token_was_removed
render :status=>200, :json=>{:message => "Logout successful." }
else
render :status=>401, :json=>{:message => "Logout failed. Invalid token or some internal server error while saving." }
end
}
end
end
def remove_current_users_token_if_json_request
#remove the users authentication token if user is logged in
if current_user and request.format.json?
current_user.authentication_token = nil
return current_user.save
else
return false
end
end
を上書きありがとうございますが、サインアウト時にトークンをリセットする方法はまだ示されていません。 – kambi
reset_authentication_tokenを使用できない何らかの理由がありますか。あなたのコントローラーから? –
sign_outアクションは、Deviseの宝石にあるDevise :: SessionsControllerの一部であり、ハックしたくありません。 – kambi