我想实现一个拦截器, 对于所有action的请求,就行处理, 没有登录的就返回登录界面. 我现在的做法是实现了一个拦截器,如下:
class LoginFilter extends ActionFilter
{
public function beforeAction($action)
{
if ($action->actionMethod == "actionLogin")
return true;
if ( Yii::$app->user->identity == null)
{
Yii::$app->request->redirect("/site/login");//这里有问题, 不能跳转
return false;
}else{
return true;
}
}
}
这个拦截器里面怎么进行页面跳转, 这样写有没有什么问题?
我还有一个思路是:
如写一个BaseController, 里面实现一个beforeAction, 拦截工作交给这个beforeAction, 然后所有我的控制器继承这个BaseController
哪种方式更符合通用做法? Yii::$app->user->identity 这个的失效周期是多久?