private function generateTokens(ServerRequestInterface $request, $lockTo, array &$tokens)
    {
        $index = self::encode($this->randomToken(18));
        $token = self::encode($this->randomToken(32));

        $tokens[$index] = [
            'uri' => $request->getUri()->getPath(),
            'token' => $token,
            'lockTo' => $lockTo,
        ];

        if ($this->maxTokens > 0 && ($total = count($tokens)) > $this->maxTokens) {
            array_splice($tokens, 0, $total - $this->maxTokens);
        }

        $token = self::encode(hash_hmac('sha256', ClientIp::getIp($request), base64_decode($token), true));

        return '<input type="hidden" name="'.$this->formIndex.'" value="'.htmlentities($index, ENT_QUOTES, 'UTF-8').'">'
               .'<input type="hidden" name="'.$this->formToken.'" value="'.htmlentities($token, ENT_QUOTES, 'UTF-8').'">';
    }
private function generateTokens(ServerRequestInterface $request, $lockTo, array &$tokens)
    {
        $index = self::encode($this->randomToken(18));
        $token = self::encode($this->randomToken(32));

        $tokens[$index] = [
            'uri' => $request->getUri()->getPath(),
            'token' => $token,
            'lockTo' => $lockTo,
        ];

        if ($this->maxTokens > 0 && ($total = count($tokens)) > $this->maxTokens) {
            array_splice($tokens, 0, $total - $this->maxTokens);
        }

        $token = self::encode(hash_hmac('sha256', ClientIp::getIp($request), base64_decode($token), true));

        return '<input type="hidden" name="'.$this->formIndex.'" value="'.htmlentities($index, ENT_QUOTES, 'UTF-8').'">'
               .'<input type="hidden" name="'.$this->formToken.'" value="'.htmlentities($token, ENT_QUOTES, 'UTF-8').'">';
    }
private function generateTokens ( ServerRequestInterface $ request , $ lockTo , array & $ tokens ) { $ index = self :: encode ( $ this -> randomToken ( 18 ) ) ; $ token = self :: encode ( $ this -> randomToken ( 32 ) ) ; $ tokens [ $ index ] = [ 'uri' => $ request -> getUri ( ) -> getPath ( ) , 'token' => $ token , 'lockTo' => $ lockTo , ] ; if ( $ this -> maxTokens > 0 && ( $ total = count ( $ tokens ) ) > $ this -> maxTokens ) { array_splice ( $ tokens , 0 , $ total - $ this -> maxTokens ) ; } $ token = self :: encode ( hash_hmac ( 'sha256' , ClientIp :: getIp ( $ request ) , base64_decode ( $ token ) , true ) ) ; return '<input type="hidden" name="' . $ this -> formIndex . '" value="' . htmlentities ( $ index , ENT_QUOTES , 'UTF-8' ) . '">' . '<input type="hidden" name="' . $ this -> formToken . '" value="' . htmlentities ( $ token , ENT_QUOTES , 'UTF-8' ) . '">' ; }
Generate and retrieve the tokens.

@param ServerRequestInterface $request
@param string                 $lockTo
@param array                  $tokens

@return string
Generate and retrieve the tokens .