簡體   English   中英

Kohana 3.2 AJAX表單令牌不斷變化

[英]Kohana 3.2 AJAX form token keeps chaning

我想以我的ajax形式使用令牌。 該表單是從一個生成唯一令牌的ajax控制器加載的。 然后,該窗體過帳到同一控制器。

但我做對了! 加載表單然后發布時,會話為空或創建了新令牌! 我猜這是因為表單和令牌是在進行ajax調用時創建的。

這是我所做的:

我將創建令牌功能放置在ajax控制器中的before()處,每次ajax加載頁面時,它都會創建一個新令牌,該令牌永遠不會生效,因為它總是在變化。

因此,然后我將令牌功能移到了主控制器上,並在其中創建了令牌,ajax控制器沒有擴展主控制器,它是獨立的。 因為我認為現在ajax調用不會加載令牌功能。 相反,ajax控制器將只獲取在main處創建的令牌。 但是......它是空的

我嘗試了Session :: instance()-> get('securitytoken')應該可以訪問應用程序中的所有會話嗎?

有誰知道我該怎么做? 還是為什么我無法訪問在另一個控制器中創建的會話?

該測試功能通過ajax獲取令牌

class Controller_Ajax extends Controller_Temp{ 
public function action_test(){
$user2 =  Session::instance()->get('securitytoken');
echo $user2; }
}

在我的主控制器中:

$token = md5(uniqid(microtime(), true));    


Session::instance()->set('securitytoken', $token);

謝謝

在您的視圖內:

<?php echo Form::hidden('csrf', Security::token()) ?>

現在,在您的控制器內部,通過驗證庫進行檢查:

<?php

$post = Validation::factory($_POST)
    ->rule('name', 'not_empty')
    ->rule('email', 'not_empty')
    ->rule('email', 'email')
    ->rule('csrf', 'not_empty')
    ->rule('csrf', 'Security::check')
;
if($post->check()) { ... }
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM