11

これは、デフォルトの url (myapp_url) にリダイレクトするために私が持っているものです。しかし、認証後にユーザーが入力したリクエストURLにリダイレクトするように変更したいと思います。それ、どうやったら出来るの?:back のように、ここで検索していくつかのオプションを試しました。しかし、行きません。

ユーザーが URL を入力すると、認証されない場合はログイン ページにリダイレクトされます。ログイン後、ユーザーは元のリクエスト URL にリダイレクトされます。

def create
   user = User.Authenticate(params[:user_id], params[:password])
 if user
   session[:user_id] = user.id
   redirect_to myapp_url, :notice => "Logged in!"
else
    flash.now.alert = "Invalid email or password"
    render "new"
  end

end
4

2 に答える 2

15

MichaelHartlによる「RubyonRailsTutorial 」の「Friendlyforwarding」に関する章を読んで、簡単に実装する方法を確認できます。

基本的に、3つのヘルパーメソッドがあります。

  1. store_locationセッション内のユーザーの希望する場所を保存する
  2. redirect_back_or(url)セッションに保存されている場所にユーザーをリダイレクトします。設定されていない場合は、urlメソッドparamに含まれている場所にリダイレクトします。
  3. かつて使用されたこの情報をクリアclear_return_toする方法で「内部的に」使用されましたredirect_back_or

次に、次の方法を使用します。

store_locationA)ゲストユーザーがログインページにリダイレクトする前に、認証の使用が必要なページにアクセスしようとしているのを見つけたら。
B)ユーザーがログインすると、ユーザーをredirect_back_or(url)正しい場所にリダイレクトするために使用します(もちろん存在する場合)

これは、これがどのように機能するかの概要です。アイデアは得られますが、実装(いくつか)の詳細については、その章を読むことをお勧めします。

于 2012-04-07T16:08:39.110 に答える
1

認証時にリダイレクトする前にセッションにパスを保存し、認証が成功した後にこのパスにリダイレクトする必要があります。

于 2012-04-07T07:06:04.920 に答える