我在執行基於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'
在此先感謝。