Irf*_*med 29 php laravel laravel-4
我有一个控制器有几种方法,我需要在每个方法的开始添加一个特定的授权检查.所以我想把这个检查放在构造函数中,
class AdminController extends BaseController {
public function __construct() {
$this->isAuthorized();
}
protected $layout = "layouts.main";
private function isAuthorized() {
if (!Session::get('userId')) {
echo "inside check"; // checking for debug purpose
return Redirect::to('login');
}
}
/**
* Admin dashboard view after authentication.
*/
public function getDashboard() {
$this->layout->content = View::make('admin.dashboard');
}
Run Code Online (Sandbox Code Playgroud)
}
它不起作用,只是在Session检查中打印消息并加载仪表板页面而不是重定向回登录页面.
我也试过这样的事,
public function getDashboard() {
$this->isAuthorized();
$this->layout->content = View::make('admin.dashboard');
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用这个奇怪的return语句调用此方法时,它就可以工作了
public function getDashboard() {
return $this->isAuthorized();
$this->layout->content = View::make('admin.dashboard');
}
Run Code Online (Sandbox Code Playgroud)
我从这里得到了这个想法.如何使用构造函数方法实现此目的.任何帮助是极大的赞赏.
luk*_*ter 73
返回a Redirect只能从路由,控制器动作和过滤器执行它.否则你必须打电话send()
Redirect::to('login')->send();
Run Code Online (Sandbox Code Playgroud)
确保使用 Illuminate\Routing\Redirector;并将其传递给构造函数。(拉拉维尔 5.2)
use Illuminate\Routing\Redirector;
class ServiceController extends Controller {
public function __construct(Request $request, Redirector $redirect) {
$this->service = Auth::user()->Service()->find($request->id);
if (!$this->service) {
$redirect->to('/')->send();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23170 次 |
| 最近记录: |