Laravel路线::组管理员
问题描述:
我想认证一些路线,如果用户是管理员。现在Laravel路线::组管理员
Route::get('/user/{data}', '[email protected]');
Route::post('/user/{data}', '[email protected]');
,我做了控制器内部:
public function getData($data = 'one')
{
if (Auth::user()->permission == 'admin') {
//...
} else {
//...
}
}
public function postData(Request $request, $data = 'one')
{
if (Auth::user()->permission == 'admin') {
//...
} else {
//...
}
}
我想和路线::组进行,但我怎么能做到这一点的routes.php文件?
答
您可以create middleware如果用户是管理员将检查:
class IsAdmin
{
public function handle($request, Closure $next)
{
if (Auth::user()->permission == 'admin') {
return $next($request);
}
return redirect()->route('some.route'); // If user is not an admin.
}
}
注册它Kernel.php
:
protected $routeMiddleware = [
....
'is.admin' => \App\Http\Middleware\IsAdmin::class,
];
然后将它应用到一个路由组:
Route::group(['middleware' => 'is.admin'], function() {
Route::get('/user/{data}', '[email protected]');
Route::post('/user/{data}', '[email protected]');
});
答
你可以指定一个路由组并给它一个中间件
https://laravel.com/docs/5.3/routing#route-groups
https://laravel.com/docs/5.3/middleware
https://laravel.com/docs/5.3/middleware#assigning-middleware-to-routes
实施例:
routes.php文件
Route::group(['middleware' => 'admin'], function() {
Route::get('/user/{data}', '[email protected]');
Route::post('/user/{data}', 'UserCon[email protected]');
});
应用程序/ HTTP /中间件/ admin.php的
<?php
namespace App\Http\Middleware;
use Closure;
class Admin
{
public function handle($request, Closure $next)
{
if (Auth::user()->permission !== 'admin') {
//
} else {
//
}
}
}
+0
谢谢!在内核注册后,它的工作原理! – Okay
谢谢!有用! – Okay