将未激活的用户漏斗到单个页面并限制访问

时间:2013-03-14 19:46:17

标签: authentication yii

因此,假设我的用户表中包含“is_confirmed”字段,我希望使用重定向将任何“等于0”的“is_confirmed”的用户漏斗到一个网址...

有没有办法进行此检查,只需要实现一次?我想一个很好的例子就是默认的用户功能,即需要登录用户的任何页面如何强制用户登录页面...

1 个答案:

答案 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组件只需要一些额外的智能。