因此,假设我的用户表中包含“is_confirmed”字段,我希望使用重定向将任何“等于0”的“is_confirmed”的用户漏斗到一个网址...
有没有办法进行此检查,只需要实现一次?我想一个很好的例子就是默认的用户功能,即需要登录用户的任何页面如何强制用户登录页面...
答案 0 :(得分:0)
我自己没有特别尝试过,但根据Yii的文档,可能redirect the user inside the login action基于该值。如果用户已确认,请调用CWebUser :: login(..)方法将标识存储在持久存储中并使用returnUrl重定向,否则用户不会被确认,因此跳过该部分只是渲染 in limbo < / em> page。
在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组件只需要一些额外的智能。