[前][次][番号順一覧][スレッド一覧]

rails:2659

From: makoto kobori <kobori@c...>
Date: Mon, 28 Apr 2008 02:51:30 +0900
Subject: [rails:2659] Re: Rails ページ制御方法

こぼりです

ありがとうございます。

教えていただいたやり方で試しで実装しております。
が、少々いきずまっております。

-----------------------------------------
1.入力画面:ファイル名:ask_q
・トークン(ランダムな長い文字列)を生成してsession変数に配列で保存
・今作ったtokenをformにhiddenで持たせる

2.確認画面:confirm_ask_q
・form(というかparams)でtokenを受け取る
・受け取ったtokenがsessionのトークン配列に存在しなければどこかへ飛ばす
・受け取ったtokenをformにhiddenで持たせる

    @tk_r=flash[:tk]    #flashで保存させて
    @tk_p_r=params[:token] #hiddenから

    if(@tk_r !=@tk_p_r)
         redirect_to :action => "ask_q"
    end

3.完了画面
・form(というかparams)でtokenを受け取る
・受け取ったtokenがsessionのトークン配列に存在しなければどこかへ飛ばす
・DBにINSERTしたら受け取ったtokenをトークン配列から削除する

-----------------------------------------

3から、IEの戻るボタンを押すと2にいきまして、

警告 : ページの有効期限切れ
要求したページは、フォームで送信された情報を使用して作成されました。この
ページは、もう利用できません。セキュリティ保護のため、情報は自動的には再
送信されません。

情報を再送信し、この Web ページを表示するには、ツール バーの [更新] ボタ
ンをクリックしてください。


とでます、ここで、「更新」をすると、コード上は、1に戻るようになっているのですが、
1の画面がでません。真っ白です。HTTPソースは以下になっておりました。
------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8"></HEAD>
<BODY></BODY></HTML>
-----

HTTPのヘッダーをみてみると、redirectはしているようなのですが・・
なぜでしょうか?

----以下HTTPヘッダー----
POST /ctl/confirm_ask_q HTTP/1.1
Accept: */*
Referer: http://localhost:3000/ctl/ask_q
Accept-Language: ja
Content-Type: multipart/form-data; boundary=---------------------------7d85d32a07d2
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: localhost:3000
Content-Length: 900
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: _ask_session_id=290afe02fb158ac27ed3231689fe51c3

-----------------------------7d85d32a07d2
Content-Disposition: form-data; name="question[title]"

test
-----------------------------7d85d32a07d2
Content-Disposition: form-data; name="question[content]"

test
-----------------------------7d85d32a07d2
Content-Disposition: form-data; name="upload[file1]"; filename=""
Content-Type: application/octet-stream


-----------------------------7d85d32a07d2
Content-Disposition: form-data; name="upload[file2]"; filename=""
Content-Type: application/octet-stream


-----------------------------7d85d32a07d2
Content-Disposition: form-data; name="question[tag]"

test
-----------------------------7d85d32a07d2
Content-Disposition: form-data; name="token"

08e77d614b18eac740097107f611b440
-----------------------------7d85d32a07d2
Content-Disposition: form-data; name="commit"

Confirm
-----------------------------7d85d32a07d2--


HTTP/1.1 302 Found 
Cache-Control: no-cache
Connection: Keep-Alive
Date: Sun, 27 Apr 2008 17:43:34 GMT
Content-Type: text/html; charset=utf-8
Server: WEBrick/1.3.1 (Ruby/1.8.6/2007-03-13)
Content-Length: 97
Location: http://localhost:3000/ctl/ask_q
Set-Cookie: _ask_session_id=290afe02fb158ac27ed3231689fe51c3; path=/

====ここまで

テスト環境は、IEのみです。




Masashi Itoh さんは書きました:
> ソラソルの伊藤と申します。
>
>   
>> ここで、�2萍未�ら、戻る画面で、�△砲い辰燭蕁⊆�動で�,鉾瑤屬箸い辰申萢�
>> (つまり、�△�ら��への一方通行のみ許可)をしたいのですが、
>> application.rb等に書くと、簡単に実装できるのでしょうか?
>>     
>
> トランザクショントークン(ワンタイムトークン)の仕組みが
> 該当するのかと思います。
>
> railsとしての仕組みには入ってないのでは?
> 下記のように自力で実装する形になるかと。
>
> 1.入力画面
> ・トークン(ランダムな長い文字列)を生成してsession変数に配列で保存
> ・今作ったtokenをformにhiddenで持たせる
>
> 2.確認画面
> ・form(というかparams)でtokenを受け取る
> ・受け取ったtokenがsessionのトークン配列に存在しなければどこかへ飛ばす
> ・受け取ったtokenをformにhiddenで持たせる
>
> 3.完了画面
> ・form(というかparams)でtokenを受け取る
> ・受け取ったtokenがsessionのトークン配列に存在しなければどこかへ飛ばす
> ・DBにINSERTしたら受け取ったtokenをトークン配列から削除する
>
> という実装になるかと。
>
> ブラウザバックにだけ対応すればよいのであれば
> 下記のような作りにしては如何でしょうか?
>
> 1.記事投稿画面(入力フォーム)
>
> ↓入力フォームをPOSTで送信
>
> 2.確認画面(入力内容をsessionに保存)
>
> ↓「OK」ボタンが押される
>
> 3.DBにINSERTして、session消して4へリダイレクト
>   (sessionが消えていれば1へリダイレクト)
>
> 4.投稿終了画面
>
> 4からブラウザの「戻る」を押すと2ではなくて3に遷移して
> 結果的に1へ飛ばされます。
>
>
>
> On Fri, 25 Apr 2008 01:44:37 +0900
> makoto kobori <kobori@c...> wrote:
>
>   
>> お世話になってます、こぼりです
>>
>> 記事投稿機能で、
>>
>> �ゝ�事投稿画面⇔��確認画面 → �E蟾峠�了画面
>>
>> という画面遷移を作りました。
>>
>> ここで、�2萍未�ら、戻る画面で、�△砲い辰燭蕁⊆�動で�,鉾瑤屬箸い辰申萢�
>> (つまり、�△�ら��への一方通行のみ許可)をしたいのですが、
>> application.rb等に書くと、簡単に実装できるのでしょうか?
>>
>> よろしくお願いいたします。
>>
>> --
>> ML: rails@r...
>> 使い方: http://QuickML.com/
>>     
>
>
> ----------------------------------
> SORASOL ソラソル株式会社
> 取締役
> 伊藤 匡(Masashi Itoh)
> msc@s...
>
> 〒153-0051 目黒区上目黒4-41-8
> TEL&FAX ??-????-????
> http://sorasol.jp/
> ----------------------------------
>
>
> --
> ML: rails@r...
> 使い方: http://QuickML.com/
>
>   


--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      2655 2008-04-24 18:44 [kobori@c...         ] Rails ページ制御方法                    
   @  2656 2008-04-25 02:54 ┣[kamei@w...          ]                                       
      2657 2008-04-25 05:09 ┗[msc@s...            ]                                       
->    2659 2008-04-27 19:51  ┗[kobori@c...         ]                                     
      2660 2008-04-28 04:50   ┗[msc@s...            ]                                   
      2661 2008-04-28 17:57    ┗[kobori@c...         ]