使用动态路由配置时在laravel中进行身份验证的问题

时间:2018-12-20 06:24:07

标签: laravel authentication routes jwt middleware

我对laravel api中间件组使用JWT身份验证。这是我的路线配置:

Route::group(['middleware' => ['api']], function() {
    Route::post('login', 'AuthController@login');
    Route::post('test', 'AuthController@test');
});

此代码运行良好,并且我无法未经授权访问AuthController类的test方法:

class AuthController extends Controller
{
    public function __construct()
    {
        $this->middleware(['jwt.auth'])->except('login');
    }

    public function login()
    {
        //...
    }

    public function test()
    {
        //...
    }
}

但是当我更改路由配置以动态标识控制器的方法名称时(如下面的代码片段所示),身份验证将不再起作用,并且我可以在没有承载令牌的情况下访问test方法!

Route::group(['middleware' => ['api']], function() {

    Route::post('/{controller}/{method}', function ($controller, $method) {

        $controllerClass = 'App\\Http\\Controllers\\'.$controller.'Controller';
        if(method_exists($controllerClass, $method))
        {
            $controller = App::make($controllerClass);
            return $controller->callAction($method, array());
        }
        return abort(404);
    });
});

有什么主意吗?

0 个答案:

没有答案