我正在尝试使用Yii创建一个简单的登录。这是我的auth控制器
class AuthController extends Controller
{
/**
* Declare class-based actions.
*/
public function actionLogin()
{
$model = new LoginForm;
$post = Yii::app()->request->getPost('LoginForm');
// If form is submitted
if($post) {
$identity = new UserIdentity($post['username'], $post['password']);
echo $identity->testing();
if($identity->authenticate()) {
echo 'yes';
} else {
echo 'no';
}
exit;
}
$this->render('login', array('model' => $model));
}
}
这是我的UserIdentity
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{ echo 'testing';
$user = LoginForm::model()->findByAttributes(array('username' => $this->username));
if(is_null($user)) {
%this->errorCode=self::ERROR_USERNAME_INVALID;
} else if($user->password != $this->password) {
$this->errorCode=self::ERROR_PASSWORD_INVALID;
} else {
$this->_id = $user->id;
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
function getId()
{
return $this->_id;
}
}
我已经提到了回答'是'和回声“不”#39;但两者都没有显示。如何纠正
答案 0 :(得分:0)
首先,你甚至不会看到那些回声声明,唯一可以让最终用户在Yii中看到的东西是" views"。对于我的登录代码,与您的登录代码略有不同,在确认身份验证后,我的应用程序将重定向到主页。您的自定义UserIdentity文件看起来很好,但同样,甚至不会看到该echo语句。此UserIdentity文件仅用于在幕后执行自定义用户身份验证。
在我的UserController中(与你的AuthController相对),我的actionLogin是:
public function actionLogin()
{
$model=new LoginForm;
// if it is ajax validation request
if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
// collect user input data
if(isset($_POST['LoginForm']))
{
$model->attributes=$_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if($model->validate() && $model->login())
{
$this->redirect(Yii::app()->user->returnUrl);
}
}
$this->render('/user/login',array('model'=>$model));
}
例如,根据上述内容,您可以重定向到您所在的上一页或重定向到主站点视图" / site / index"根据您是否已登录,根据具有某些任意功能或打印HTML的代码。一个过于简单的站点视图示例:
<?php
/* @var $this SiteController */
if (Yii::app()->user->isGuest)
{
// Do stuff here if user is guest.
echo 'User is a guest.';
}
else
{
// Do stuff here if user is authenticated.
echo 'User is authenticated.';
}
?>