0

Rails(3.2.6)とdevise(2.1.2)を使用していて、続行する前にユーザーが認証されていることを確認したいコントローラーがあります。

楽観的に、私は試しました...

module Spree
class MyAppController < Spree::BaseController

before_filter :authenticate_user!

...remainder of MyAppController code...

ログインページまたはサインインページにリダイレクトされません。「製品」ページにリダイレクトされ、続行するにはサインインまたはサインアップする必要があるという丁寧なメッセージが上部に表示されます。

サインアップ/サインインにリダイレクトされ、それが正常に完了すると、元のコントローラーパスが再開されます

探し回って、私はそのauthenticate_userを読みました!from Deviseは、無限のリダイレクトを引き起こすような方法でSpreeと相互作用するため、Spreeの何かがこれを無効にし、上記で説明した不完全な動作を引き起こします。

誰かがこれを機能させることができましたか、または良い回避策の提案がありますか?

4

2 に答える 2

1

追加してみましたか

before_filter :check_authorization

あなたのコントローラーに?

私はそれがあなたが探していることをするかもしれないと思います。

ありがとう

于 2012-07-02T15:35:20.810 に答える
1

私は回避策を見つけましたが、私は経験豊富な Rails 開発者ではないので、この解決策がどれほど合理的であるかを知ることができません。

フィルタリングを行うメソッドを作成し、authenticate_user の代わりに使用しました!...

def require_authentication
  unless current_user 
    # setting this in the session allows devise to return us to
    # the original invocation path, once sign up / sign in is complete
    session[:user_return_to] = request.env['PATH_INFO']
    redirect_to new_user_session_url and return 
  end 
end
于 2012-06-30T11:44:04.593 に答える