我使用nginx的服务器Yii应用。
我的问题是价值Yii::app()->user->returnUrl
,在我SiteController.php,它重定向我后登录成功永远是- mysite的/ index.php的,无论我是从哪个页面。
我怎样才能修复它是前一页面的URL的价值?
我使用nginx的服务器Yii应用。
我的问题是价值Yii::app()->user->returnUrl
,在我SiteController.php,它重定向我后登录成功永远是- mysite的/ index.php的,无论我是从哪个页面。
我怎样才能修复它是前一页面的URL的价值?
这就是你所看到的默认行为,如果你想改变,有一些选择! 在这些选择相同的是,你应该扩展CWebUser并添加功能
class WebUser extends CWebUser
{
}
&你需要的,提到它在配置
'user'=>array(
'class' => 'WebUser',
'loginUrl' => array('user/login'),
'defaultDashboard' => array('user/dashboard'),
)
完成后,现在的选择! 如果你想RETURNURL固定在功能beforeLogin设置它,您应该覆盖在WEBUSER类此功能和手动设置RETURNURL,在更多信息的CWebUser官方API 。 但是,如果RETURNURL不固定和你希望它是几乎为每项设置这就需要登录,那么你应该重写loginRequired功能作用
public function loginRequired() {
$app=Yii::app();
$request=$app->getRequest();
$controller=$app->controller;
$actionParameters=$controller->actionParams;
if(!$request->getIsAjaxRequest()) {
if(empty($actionParameters))
$this->setReturnUrl(array($controller->route));
else
$this->setReturnUrl(array($controller->route,$actionParameters));
}
if(($url=$this->loginUrl)!==null) {
if(is_array($url)) {
$route=isset($url[0]) ? $url[0] : $app->defaultController;
$url=$app->createUrl($route,array_splice($url,1));
}
$request->redirect($url);
}
else
throw new CHttpException(403,Yii::t('yii','Login Required'));
}
&最后一步无法成功登录后循环
if($model->validate() && $model->login()){
$returnUrl=Yii::app()->user->returnUrl;
$url=(is_array($returnUrl))?$returnUrl[0]:$returnUrl;
if(isset($returnUrl)&&stripos(strtolower($url),'logout')==false&&stripos(strtolower($url),'login')==false) {
$this->redirect($this->createUrl($returnUrl[0],$returnUrl[1]));
} else {
$this->redirect($this->createUrl($returnUrl[0],$returnUrl[1]));
}