簡體   English   中英

Zend Framework 2電子郵件令牌驗證

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

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