我在执行基于http头中收到的NT用户的自动登录时遇到问题。 (内部网站)基于http头的Yii2自动登录
我已经添加下面的代码在我的警予\基地控制器的beforeAction \ Controller.php这样
public function beforeAction($action)
{
if (!Yii::$app->user->identity) {
Yii::$app->user->enableSession = false;
//the NT username received in the HTTP headers
$ntnet = \app\models\Users::getNTNET();
//var_dump($ntnet);
$model = \app\models\Users::findOne(["LOWER(`user_name`)" => strtolower($ntnet)]);
if (!is_null($model))
Yii::$app->user->login($model);
}
$event = new ActionEvent($action);
$this->trigger(self::EVENT_BEFORE_ACTION, $event);
return $event->isValid;
如果我取消后续代码var_dump($ ntnet)线,它会工作, echo $ name,如果没有,$ ntnet将为空,同样的$模型,如果我var转储它(以及$ ntnet之前),它会输出整个用户属性和登录成功,否则,它会为空,为什么?对我来说完全是无稽之谈。例如 - 我有意在“LOWER()”函数中添加一个输入错误以接收SQL错误并查看正在执行的整个查询,并且如果var_dump($ ntnet)是注释,它将生成下面, 正如你可以看到$ ntnet参数为空:
SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION oncall.LOWaER does not exist
The SQL being executed was: SELECT * FROM `users` WHERE LOWaER(`user_name`)=''
用的var_dump($ ntnet)的错误将是如下:
SQLSTATE[42000]: Syntax error or access violation: 1305 FUNCTION oncall.LOWaER does not exist
The SQL being executed was: SELECT * FROM `users` WHERE LOWaER(`user_name`)='myusername'
在此先感谢。