Yii::t('common','Username'), 'password' => Yii::t('common','Password'), 'rememberMe' => Yii::t('common','Remember Me'), ]; } /** * Validates the password. * This method serves as the inline validation for password. * * @param string $attribute the attribute currently being validated * @param array $params the additional name-value pairs given in the rule */ public function validatePassword($attribute, $params) { if (!$this->hasErrors()) { $user = $this->getUser(); if (!$user || !$user->validatePassword($this->password)) { $this->addError($attribute, Yii::t('common','Incorrect username or password.')); } } } /** * Logs in a user using the provided username and password. * * @return bool whether the user is logged in successfully */ public function login() { if ($this->validate()) { return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0); } return false; //如果为true 将允许任意密码登陆 } /** * Finds user by [[username]] * * @return User|null */ protected function getUser() { if ($this->_user === null) { $this->_user = Adminer::findByUsername($this->username); //千万注意后端的登陆使用的是Adminer模型,不是User } return $this->_user; } //登录记录 public function loginLog(){ $request = Yii::$app->getRequest(); $nowFile = $request -> getScriptFile(); $url = $request->getUrl(); $hostInfo = $request->getHostInfo(); $port = $request->getPort(); $data = "登陆系统:"; $data .= "|域名:" . $hostInfo; $data .= "|端口:" . $port; $data .= "|网址:" . $url; $data .= "|脚本:" . $nowFile; $model = new CLog(); $model->username = $this->username; $model->ip = Yii::$app->request->userIP; $model->data = $data; $model->create_time = time(); $model->save(); // $res = $model->getErrors(); //数据保存报错时可以用此打印出错误 //编制邮件发送通知(并发问题导致502错误,故暂只发一个邮件 $messages = []; $message = Yii::$app->mailer->compose(); // $message->setFrom(Yii::$app->params['noticeEmail']); //message 给登陆者发送 $subject = "账号登陆提醒"; $body = "您的账号【" . $this->username . "】刚刚登陆了网站:" . $request->absoluteUrl; $message->setTo(Yii::$app->user->identity->email); $message->setSubject($subject); $message->setTextBody($body); // $message->send(); //单发时可用该方法,群发时会导致页面卡停,报502错 $messages[] = $message; //message2 给管理人员发送 $message2 = Yii::$app->mailer->compose(); $subject = "账号登陆提醒"; $body = "运维账号【" . $this->username . "】刚刚登陆了网站:" . $request->absoluteUrl; $message2->setTo('1280880631@qq.com'); $message2->setSubject($subject); $message2->setTextBody($body); $message2->send(); $messages[] = $message2; //群发 // Yii::$app->mailer->sendMultiple($messages); } }