auser = new AUser(); $this->__ph = new PasswordHash(8, FALSE); $this->data['rootUrl'] = Doo::conf()->APP_URL; } // function signUp() { // $this->render('admin-login', $this->data, TRUE); // } function signIn() { $this->data['tips'] = ''; // 密码采用PHPASS // 防止跨站采用user_agent随机串 // 重复提交CRSF_FORM // 自动登录 可采用登录后生成一个可验证字符串,要求输入密码可通过网上登录查看(从客户端点击)加验证码 // if ($this->auth->isLoggedIn()) // return Doo::conf()->APP_URL . 'project/welcome'; if (isset($_POST['muser']) && isset($_POST['mpasswd'])) { if ($this->isValidFormHash($_POST['tokenform'])) { $retval = $this->checkLogin($_POST['muser'], $_POST['mpasswd']); if (isset($retval['auid'])) { $_SESSION['auid'] = $retval['auid']; $_SESSION['aname'] = $retval['auname']; $_SESSION['token'] = sha1($this->randomPassword() . $_SESSION['auid']); setcookie('token', $_SESSION['token'], 0, '/', Doo::conf()->APP_URL, FALSE, TRUE); return Doo::conf()->APP_URL . 'manage/user/list'; } else { $this->data['tips'] = '
帐号不存在或者密码错误。
'; // die(); } } else { return Doo::conf()->APP_URL . 'manage'; } } $this->data['_token_'] = $this->generateFormHash($this->randomPassword()); $this->render('admin-login', $this->data, TRUE); } function signOut() { session_destroy(); setcookie('token', '-1', 0, '/', Doo::conf()->APP_URL, FALSE, TRUE); return Doo::conf()->APP_URL . 'manage'; } function checkLogin($name, $passwd) { $auserArray = $this->auser->getOne(array('where' => 'auname=?', 'param' => array($name), 'asArray' => TRUE)); if (isset($auserArray) && $auserArray && $this->__ph->CheckPassword($passwd, $auserArray['aupass'])) { return $auserArray; } else { return FALSE; } } public function randomPassword() { $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789"; $pass = array(); //remember to declare $pass as an array $alphaLength = strlen($alphabet) - 1; //put the length -1 in cache for ($i = 0; $i < 8; $i++) { $n = rand(0, $alphaLength); $pass[] = $alphabet[$n]; } return implode($pass); //turn the array into a string } function generateFormHash($salt) { $hash = sha1(mt_rand(1, 1000000) . $salt); $_SESSION['csrf_hash'] = $hash; return $hash; } function isValidFormHash($hash) { return $_SESSION['csrf_hash'] === $hash; } }