[英]Zend Framework 2 email token verification
我正在嘗試建立一個系統(在Zend Framework 2中),通過發送帶有令牌鏈接的電子郵件來驗證用戶注冊的電子郵件(例如: http : //example.com/user/autenticate/verify/abG12Fdss67j3kgfdds4jdpa74FiP9 ),以便如果在數據庫中找到令牌,則預先注冊的帳戶將移至驗證狀態。
我在module.config.php中使用這樣的路由:
'verify' => array(
'type' => 'Segment',
'options' => array(
'route' => '/user/autenticate/verify/:token',
'defaults' => array(
'__NAMESPACE__' => 'User\Controller',
'controller' => 'Autenticate',
'action' => 'verify',
),
'constraints' => array(
'token' => '[a-zA-Z0-9]{30}'
),
),
),
然后在AutenticateController.php中,執行以下操作方法:
public function verifyAction()
{
sleep(3); // Delay against brute attack (is it useful?)
$token = $this->params()->fromRoute('token');
$registerverification = new RegisterVerification();
try {
$registerverification = $this->getRegisterVerificationTable()->getRegisterVerification($token);
// If arrives here (no exception) means that the token was in the database
$aux = $this->getRegisterVerificationTable()->deleteRegisterVerification($token);
$user = new User();
$user = $this->getUserTable()->getUser((int)$registerverification->id);
$user->verified = date("Y-m-d H:i:s");
$this->getUserTable()->saveUser($user);
$this->flashMessenger()->addMessage("Now your account is active");
} catch (\Exception $e) { // Could not find row: $token
$this->flashMessenger()->addMessage($e->getMessage());
}
return array();
}
和這樣的verify.phtml:
<?php
echo $this->flashMessenger()->render();
?>
這是有效的,但不是第一次嘗試 ,而是僅在刷新URL后( http://example.com/user/autenticate/verify/abG12Fdss67j3kgfdds4jdpa74FiP9 )。
任何人都可以幫我做我必須做什么來使第一次調用URL時執行AutenticateController.php的方法verifyAction()?
flash messenger旨在顯示下一個請求的消息,因此您可能希望在添加成功消息后重定向到另一個URL。 這可能是唯一的問題(否則請告訴我們第一次請求會發生什么)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.