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... ]