Php 在Laravel中声明路由时,在if语句中使用方法控制器
声明路由时,我想在控制器if语句中使用我的show方法:Php 在Laravel中声明路由时,在if语句中使用方法控制器,php,laravel,Php,Laravel,声明路由时,我想在控制器if语句中使用我的show方法: Route::get('/leave', function() { if(Auth::user()->admin) { 'uses' => 'TimeController@show' } else { return "not found"; } })->name('admin-time'); 但是我定义的使用的不起作用!我知道它不应该工作。对于这样
Route::get('/leave', function() {
if(Auth::user()->admin)
{
'uses' => 'TimeController@show'
}
else {
return "not found";
}
})->name('admin-time');
但是我定义的
使用的不起作用!我知道它不应该工作。对于这样的身份验证,您应该使用中间件:
例如,通过将路由包装在自定义中间件中来保护路由auth:admin
:
Route::middleware('auth:admin')->group(function () {
Route::get('/leave', ['uses' => 'TimeController@show'])->name('admin-time');
});
或使用自定义请求:
例如,将路线保持为:
Route::get('/leave',['uses'=>'TimeController@show']->name('admin-time')代码>
在TimeController
中,您的show
方法将包含您的自定义请求
,您可以使用php artisan make:Request MyCustomRequest
public function show(MyCustomRequest $request) {
...
}
在您的MyCustomRequest
中,您可以将其添加到authorize()
方法中:
public function authorize()
{
if (Auth::user()->admin) {
return true;
}
return false;
}
路线:
控制器:
public function show()
{
if(!Auth::user()->admin)
{
return abort(404);
}
// your code.
}
记住:不要使用基于闭合的管线。它阻止你
路由:缓存
单独的路由或中间件如何?
public function show()
{
if(!Auth::user()->admin)
{
return abort(404);
}
// your code.
}