【发布时间】:2020-05-19 02:51:48
【问题描述】:
嗨,我正在做 laravel 项目,当他试图访问一个页面时,我必须检查用户的权限,我的问题是在我创建 Permission 中间件并将其添加到 kernel.php 之后,它会检查权限所有路线,即使我没有在任何路线中调用它。 我不想在所有路由上应用这个中间件,只是其中一些。 这是我的权限中间件代码
namespace App\Http\Middleware;
use Closure;
use Session;
use App\Rules;
use Illuminate\Support\Facades\Route;
use URL;
class Permissions
{
public function handle($request, Closure $next) {
$rolename=Session::get('rule_name') ;
$route = $request->path();
$hasPermission = Rules::where('rule_name', 'superadmin')->where('allowed_pages', 'like', '%' . $route . '%') ->first();
if (empty($hasPermission)) {
echo 'Unauthorized.<a href="' . URL::to('/admin') . '">Go Back</a>';
die();
}
}
}
}
这是我的路线文件
Route::resource('Login', 'LoginController')->name('index','Login');
Route::resource('Backup', 'BackupController')->name('index','Backup');
如您所见,我没有在这些牵引路线上应用中间件,但中间件正在使用这些牵引路线 这是我的内核代码
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
'Permissions' => \App\Http\Middleware\Permissions::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
我只想通过这样的路由运行这个中间件
Route::group(['middleware' => 'permissions'], function () {
Route::resource('Backup', 'BackupController')->name('index','Backup');
}
谢谢你提前 最好的问候
【问题讨论】:
-
不要在
web申请创建indivdual和申请单路由
标签: laravel routes laravel-middleware