gpt4 book ai didi

php - 如何在 yii 框架的命令类中修复 CConsoleApplication.user 未定义?

转载 作者:可可西里 更新时间:2023-11-01 13:47:31 24 4
gpt4 key购买 nike

每当我在 shell 中运行简单的 cron 脚本时,我都会遇到这个错误,知道如何解决这个问题吗?从错误本身来看,它说 .user 是不安全的,当我放置

'user' => array(
// enable cookie-based authentication
'allowAutoLogin' => true,
'loginUrl' => array('myaccount/blah/login'),

在控制台配置中,它正在寻找一个“类”,我应该在该数组中包含什么类? , 这个用户登录 url 在登录和身份验证中使用了 LDAP 东西,我该怎么办?

最佳答案

CConsoleApplication 用于处理离线任务。例如,应用程序在 linux 系统中启动一个 cronjob。该应用程序每天检查您网站的注册用户是否应更改其密码,因为密码必须每 3 个月更改一次。如果密码过期,请发送电子邮件。
要预选您已设置范围条件以检查用户状态的用户,以及限制登录用户使用她自己的数据的范围:

    public function scopes(){
return array(...,
'user' => array(
'condition'=>'id='.Yii::app()->user->id,
),
'active' => array(
'condition'=>'status='.self::STATUS_ACTIVE,
), ...
);
}

现在,在您的 CCA - 代码中,您使用 active 范围来获取所有用户:$usersArray = User::model()->active()->findAll(); ...foreach...。这里的问题在于使用扩展类,CActiveRecord 类。主要用作模型中的类扩展,模型存储在数据库中。在这个 CActiveRecord 类中,CActiveRecord->__call 函数用于获取模型的所有存储范围。之后,该类将实际请求的范围与数据库条件的其余部分合并。首先加载所有范围的事实在加载 user-scope 时发生错误,包括 Yii::app()->user->idWebUser 被调用并抛出异常“CException”,消息为“属性“CConsoleApplication.user 未定义”。您不会调用 WebUser,但自动安排这是给你的:-)

所以,像schmunk那样做说。在您的范围代码中生成一个异常部分,确保 Yii::app()->user 不被调用:

 public function scopes(){
if (Yii::app() instanceof CConsoleApplication) {
$user = array(''); //no condition
}else{
$user = array(
'condition'=>'id='.Yii::app()->user->id,
);
}
return array(
'user' => $user,
'active' => array(
'condition'=>'status='.self::STATUS_ACTIVE,
), ...
);
}

我希望解释对您有所帮助,也许对其他问题也有帮助。

关于php - 如何在 yii 框架的命令类中修复 CConsoleApplication.user 未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16339814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com