laravel guard 全局动态设置

参考 http://mattallan.org/2016/setting-the-guard-per-route-in-laravel/php

监听 RouteMatched 事件, 设置默认的 guardlaravel

<?php
$this->app['router']->matched(function (\Illuminate\Routing\Events\RouteMatched $event) {
    $route = $event->route;
    if (!array_has($route->getAction(), 'guard')) {
        return;
    }
    $routeGuard = array_get($route->getAction(), 'guard');
    $this->app['auth']->resolveUsersUsing(function ($guard = null) use ($routeGuard) {
        return $this->app['auth']->guard($routeGuard)->user();
    });
    $this->app['auth']->setDefaultDriver($routeGuard);
});
<?php
Route::group(['guard' => 'api'], function () {
    Route::get('/api/whoami', function () {
        return Auth::user()->toJson();
    });
});

Route::group(['guard' => 'web'], function () {
    Route::get('/whoami', function () {
        $name = Auth::user()->name;
        return "hello {$name}!";
    });
});

另外一种思路, 写一个中间件来设置默认的 guardweb

相关文章
相关标签/搜索