php - 用于 API 的 Laravel 中间件身份验证

标签 php laravel authentication laravel-5.1 laravel-middleware

我目前正在开发一个具有 API 的应用程序,我希望可以通过中间件访问该 API,该 API 将检查用户是否使用 Laravel 的默认 Auth 中间件和 Tymone 的基于 JWT.Auth token 的中间件进行身份验证,以便请求可以通过任何一种方式进行身份验证。

我可以弄清楚如何拥有一个或另一个但不能同时拥有,我怎么能做到这一点?我想我需要创建一个使用这些现有中间件的自定义中间件?

我正在使用 Laravel 5.1

谢谢

最佳答案

事实证明,我确实需要制作自己的中间件,这比我想象的要容易:

<?php

namespace App\Http\Middleware;

use Auth;
use JWTAuth;
use Closure;

class APIMiddleware {

/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next) {        
    try {
        $jwt = JWTAuth::parseToken()->authenticate();
    } catch (\Tymon\JWTAuth\Exceptions\JWTException $e) {
        $jwt = false;
    }
    if (Auth::check() || $jwt) {
        return $next($request);
    } else {
        return response('Unauthorized.', 401);
    }
}
}

然后我在内核中注册后在我的 api 路由组上使用这个中间件:
Route::group(['prefix' => 'api', 'middleware' => ['api.auth']], function() {

关于php - 用于 API 的 Laravel 中间件身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34921430/

相关文章:

php - 我需要通过使用引用帖子中的表用户的外键来了解帖子的所有者

java - Apache MyFaces 2.0 身份验证和授权

performance - Linux - HTPASSWD 文件太大? (超过2000个用户)

php - 将密码存储在数据库中并确保管理面板的安全

laravel - 何时在 Laravel 5 中使用 belongsToMany 与 hasMany

php pdo 和 html 实体解码

Laravel Socket.io,Redis 事件正在广播但未在客户端显示

javascript - Passport facebook 策略 throw 数据必须是使用 Node.js 的字符串

php - 在重定向页面上获取所选项目 - 如何?

php - Mysql子查询多结果