因此,鉴于我有一个字段为“is_confirmed”的用户表,我希望使用重定向将具有等于 0 的“is_confirmed”的任何人汇集到单个 url...
有没有办法进行此检查,以便只需要执行一次?我想一个很好的例子是任何需要登录用户的页面如何强制用户进入登录页面的默认用户功能......
因此,鉴于我有一个字段为“is_confirmed”的用户表,我希望使用重定向将具有等于 0 的“is_confirmed”的任何人汇集到单个 url...
有没有办法进行此检查,以便只需要执行一次?我想一个很好的例子是任何需要登录用户的页面如何强制用户进入登录页面的默认用户功能......
我自己还没有具体尝试过,但是根据 Yii 的文档,可能会根据值在登录操作中重定向用户。如果用户被确认,则调用 CWebUser::login(..) 方法将身份存储在持久存储中并使用 returnUrl 重定向,否则用户未确认因此跳过该部分并仅呈现 inlimbo页面。
在您的 SiteController::actionLogin() 中,您可能会做这样的事情(另外,UserIdentity 组件应该有一个返回确认字段值的方法)-
$identity = new UserIdentity();
if($identity->authenticate()) {
if($identity->isConfirmed() == 1) {
Yii::app()->user->login($identity);
$this->redirect(Yii::app()->user->returnUrl);
} else {
$this->render('not_yet_confirmed_view');
}
} else {
throw new CHttpException(500,'Internal Server Error. Could not authenticate.');
}
编辑 - 删除了意外的额外 CWebUser::login() 并澄清 UserIdentity 组件只需要一些额外的智能。