使用 laravel 5.1 和 jwt 使用 cookie 进行身份验证
Posted
技术标签:
【中文标题】使用 laravel 5.1 和 jwt 使用 cookie 进行身份验证【英文标题】:Authenticate with a cookie using laravel 5.1 and jwt 【发布时间】:2016-03-21 02:52:41 【问题描述】:我正在使用 jwt auth (https://github.com/tymondesigns/jwt-auth) 设置一个 laravel 应用程序 (v5.1)。从这个项目中得到一个样板:https://github.com/francescomalatesta/laravel-api-boilerplate-jwt。这样我希望将来能够对不同的应用程序进行身份验证。
我的问题是我试图在同一个项目中创建一些受保护的页面,但我目前无法阻止没有 cookie 的用户(未经过身份验证)。为了“保护”访问,我在 $routeMiddleware(在 Kernel.php 中)中有以下值:
'csrf' => \csd\Http\Middleware\VerifyCsrfToken::class,
'auth' => \csd\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \csd\Http\Middleware\RedirectIfAuthenticated::class,
'jwt.refresh' => \Tymon\JWTAuth\Middleware\RefreshToken::class
我还尝试将 'jwt.auth' => \Tymon\JWTAuth\Middleware\GetUserFromToken::class 添加到此数组中,但没有任何改变。
如何在使用此 jwt-auth 时阻止用户访问我的页面?
提前致谢。
【问题讨论】:
【参考方案1】:要将其应用于所有路由,您必须将其放在 $middleware
中,而不是 Http 内核 (app/Http/Kernel.php
) 上的 $routeMiddleware
属性中。
或者,当与$routeMiddleware
一起使用时,您必须在路由定义中明确引用它;像这样:
Route::group(['middleware'=>'jwt.auth'], function($router)
$router->resource('protected-resource', 'SecretSauceController');
);
【讨论】:
以上是关于使用 laravel 5.1 和 jwt 使用 cookie 进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 5.1 上的控制器构造函数之前运行中间件?