Php 当用户无效时,Modx登录预读中断

Php 当用户无效时,Modx登录预读中断,php,authentication,modx,Php,Authentication,Modx,我正在尝试添加一个auth控件来验证用户是否已经登录,为了实现这一点,我使用了登录预阅读,我的工作基于此,这是我的最终预阅读代码: <?php $modx->log(modX::LOG_LEVEL_ERROR, "Running login preHook "); if (!isset($_GET['service'])){ $formFields = $hook->getValues(); $username = $formFields['

我正在尝试添加一个auth控件来验证用户是否已经登录,为了实现这一点,我使用了登录预阅读,我的工作基于此,这是我的最终预阅读代码:

<?php
$modx->log(modX::LOG_LEVEL_ERROR, "Running login preHook ");
if (!isset($_GET['service'])){
    $formFields = $hook->getValues();
    $username = $formFields['username'];
    $modx->user = $modx->getObject('modUser', array('username' => $username, ));
    //Agregarle validacion
    if (isset($modx->user)) {
        $modx->log(modX::LOG_LEVEL_ERROR, "Captured usernames is ".$username. ' loaded user is ' . isset($modx->user));
        $profile = $modx->user->getOne('Profile');
        if (isset($profile)) {
            $extended = $profile->get('extended');
            $modx->log(modX::LOG_LEVEL_ERROR, "Logged is ".$extended['logged'] );
            if ($extended['logged'] == '1') {
                  $url = $modx->makeURL(38, '',  array('userblocked' => $username), 'https');
                  $modx->log(modX::LOG_LEVEL_ERROR, "Url is ".$url );
                  $modx->sendRedirect($url);
                  return false;
            }        
        } else {
            $errorMsg = "User profile for ".$username. " not found";
            $modx->log(modX::LOG_LEVEL_ERROR, $errorMsg );
            $hook->addError('user',$errorMsg);
            return false;
        }
        
    } else {
        $errorMsg = "User ".$username. " not found";
        $modx->log(modX::LOG_LEVEL_ERROR, $errorMsg );
        $hook->addError('user',$errorMsg);
        return false;
    }
    
} else {
    return true;    
}

我从一个Modx社区论坛得到了答案,并将其添加到这里,以防其他人有相同或类似的问题,下面是答案:

“您可能不应该用null覆盖$modx->user。如果您使用,请尝试使用”

而不是

$modx->user = $modx->getObject('modUser', array('username' => $username, ));
//Agregarle validacion
if (isset($modx->user)) {
   ....

$modx->user = $modx->getObject('modUser', array('username' => $username, ));
//Agregarle validacion
if (isset($modx->user)) {
   ....