2012-02-08 3 views
1

私は私の認証システムにdeviseを使用しています。メインページにはログイン画面があり、ユーザを作成して完全にログインします。しかし、ログインした後は、インデックスページに戻りますが、実際のユーザーのページ、つまりlocalhost:3000/user/1にリダイレクトします。このページは、ログインしているユーザーのみが閲覧できるようにしたい、IE:他のユーザーは他のユーザーのプロファイルを表示できません。誰かがlocalhost:3000/user/2と言うように移動しようとすると、ログイン画面が表示され、そのユーザーと一致する必要があります。ログイン後にUser#showページにリダイレクトするときに問題が発生しました。

私はこれは複雑な質問ですが、どんな助けも役に立つと思います。

答えて

2

あなたが私に説明していることは、あなたが認証と認可を混ぜているように思えます。あなたがユーザー/ユーザー/ 1 /ユーザー/ 2にアクセスすることを許可するかどうかを判断するのは、承認の対象であるかどうかを判断するためです。

認証は「あなたがあなたが言う人ですか?」と判断するプロセスですが、認可は「あなたがどこに行きたいのですか」を決定するプロセスです。

これまでのところ、あなたは認証のための工夫使用している、とあなたは完全な承認ルートを移動したくない場合は、(私の好みはカンカンです。)別のgem for Authorizationをつかんで

を見てみたいと思うでしょう(私はそれに反対したいと思いますが...)あなたはcurrent_user_id == id_from_the_urlかどうかを確認するには、ユーザコントローラのbefore_filterでチェックを行うことができます。

、ログイン後にリダイレクトするために、あなたがこのようになります工夫フックafter_sign_in_path_forを使用したいと思う:

class ApplicationController < ActionController::Base 
    def after_sign_in_path_for(resource) 
     return user_path(resource) 
    end 
end 

出典:https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in

+0

私は自分のアプリケーションにカンカンを追加することを考えていました。私はそれについてどうやって行くのか分からない完全な認可ルートに行きたいと思っています。 サインイン後に個々のショーページにリダイレクトする方法はまだ分かりません。 – RubyNerd

+0

@RubyNerdユーザーがサインインした後のリダイレクトの回答の最後の部分を参照してください。 –

+0

ありがとうございます!今は完全にリダイレクトされています。 – RubyNerd

関連する問題