我想在声明路由时在if语句中使用我的show方法:
Route::get('/leave', function() {
if(Auth::user()->admin)
{
'uses' => 'TimeController@show'
}
else {
return "not found";
}
})->name('admin-time');
但我定义它的uses
不起作用!我知道它不应该有用。
答案 0 :(得分:1)
对于这样的身份验证,您应该使用中间件: https://laravel.com/docs/5.6/middleware
例如,通过将路径包装在自定义中间件auth:admin
中来保护路由:
Route::middleware('auth:admin')->group(function () {
Route::get('/leave', ['uses' => 'TimeController@show'])->name('admin-time');
});
或使用自定义请求: https://laravel.com/docs/5.6/requests
例如,将您的路线保持为:
Route::get('/leave', ['uses' => 'TimeController@show'])->name('admin-time');
在您的TimeController
show
方法中,您可以使用Request
生成自定义php artisan make:request MyCustomRequest
public function show(MyCustomRequest $request) {
...
}
在您的MyCustomRequest
中,您可以将其添加到authorize()
方法:
public function authorize()
{
if (Auth::user()->admin) {
return true;
}
return false;
}
答案 1 :(得分:0)
路线:
public function show()
{
if(!Auth::user()->admin)
{
return abort(404);
}
// your code.
}
控制器:
route:cache
请记住:不要使用基于闭包的路线。它阻止你 {{1}}。