控制器里设置过滤器的问题-过滤器后面的代码被执行,求解惑!
代码逻辑是这样的
我扩展了basecontroller的 __construct方法,在这里加了授权验证和身份验证的逻辑
如果授权没通过或身份验证没通过,或者对当前路径没有访问权限,就会引导到其他路径,中间的处理代码如下:
过滤器代码:
结果是它跑进了过滤器的代码,但$this->beforeFilter('illegal_local_access:'.$this->c); 之后的代码(这个指的还是__construct里的代码)还会被执行;如果在$this->beforeFilter('illegal_local_access:'.$this->c); 后加exit; ,则返回空白,也就是程序终止了,没有重绘视图也没有被重导向。 想问以下,在控制器里__construct方法设置过滤器,是不要等__construct方法被执行完了才执行过滤器的代码?请指教!
我扩展了basecontroller的 __construct方法,在这里加了授权验证和身份验证的逻辑
如果授权没通过或身份验证没通过,或者对当前路径没有访问权限,就会引导到其他路径,中间的处理代码如下:
$token = new Token;
$username = $token->check_token($this->token);
$this->user = User::where('username', $username)->first();
if(empty($this->user)) {
if($this->channel == 0) {
//会话丢失或非法访问
$this->beforeFilter('illegal_local_access:'.$this->c);
} else {
echo json_encode(array('status' => 12));exit;
}
}
过滤器代码:
Route::filter('illegal_local_access', function($route, $request, $controller)
{
$login_status = 0;
if($controller == 'home') {
return View::make('home')->withLogin_status($login_status);
} else {
return Redirect::to('/home');
}
});
结果是它跑进了过滤器的代码,但$this->beforeFilter('illegal_local_access:'.$this->c); 之后的代码(这个指的还是__construct里的代码)还会被执行;如果在$this->beforeFilter('illegal_local_access:'.$this->c); 后加exit; ,则返回空白,也就是程序终止了,没有重绘视图也没有被重导向。 想问以下,在控制器里__construct方法设置过滤器,是不要等__construct方法被执行完了才执行过滤器的代码?请指教!
0 个回复