Php 当用户无效时,Modx登录预读中断
我正在尝试添加一个auth控件来验证用户是否已经登录,为了实现这一点,我使用了登录预阅读,我的工作基于此,这是我的最终预阅读代码: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['
<?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)) {
....