2017-04-10 19 views
1

マイlaravelバージョン:5.2ベンダークラスファイルを上書きする方法は?

私はtymondesigns/JWT-AUTH例えばGetUserFromToken.php

\vendor\tymon\jwt-auth\src\Middleware\GetUserFromToken.php 

    class GetUserFromToken extends BaseMiddleware 
    { 
     /** 
     * Handle an incoming request. 
     * 
     * @param \Illuminate\Http\Request $request 
     * @param \Closure $next 
     * @return mixed 
     */ 
     public function handle($request, \Closure $next) 
     { 
      if (! $token = $this->auth->setRequest($request)->getToken()) { 

       return $this->respond('tymon.jwt.absent', 'token_not_provided', 400); 
      } 

を上書きしたい、私はトークンが提供されていないときにカスタムメッセージを返すようにしたいです。私はどのように私は、ベンダーのGetUserFromToken.phpを上書きするカスタムクラスを作成する必要があり、このファイルを直接変更することはできませんので、

if (! $token = $this->auth->setRequest($request)->getToken()) { 

      return my_custom_message; 
     } 

可能であれば、必要な手順を詳細に記述してください。ありがとう。

更新#2

Kernel.php

protected $routeMiddleware = [ 

    'jwt.auth' => \App\Http\override\MyGetUserFromToken::class, 

私は、以下のディレクトリにGetUserFromToken.phpを作成しました。

class MyGetUserFromToken extends GetUserFromToken 

Kernel.phpでこのクラスをリスト: MYPROJECT \アプリ\のHttp \それは単にミドルウェアですので、あなただけのこのクラスを拡張することができるはずです\ MyGetUserFromToken.phpに

<?php 

namespace App\Services\Middleware; 
use Tymon\JWTAuth\Middleware\GetUserFromToken; 

class MyGetUserFromToken extends GetUserFromToken 
{ 
    public function handle($request, \Closure $next) 
    { 
     if (! $token = $this->auth->setRequest($request)->getToken()) { 
      return my_custom_message; 
     } 
+0

、あなただけの 'クラスMyGetUserFromTokenがGetUserFromToken'を拡張し、このクラスを拡張して、ミドルウェアとしてKernel.phpでこのクラスを一覧表示することができるはずです。このように '' jwt.auth '=> App \ MyGetUserFromToken :: class、 ' –

+0

こんにちは、Container.php行のReflectionExceptionが734: クラスApp \ Http \ override \ MyGetUserFromTokenは存在しません" 2。このアイデアの原因は何ですか? – ethan17

+0

ファイルが実際に存在していて、入力ミスがないことを確認してください。大文字の使用を含む。例えば、Override vs override? –

答えて

1

を上書きミドルウェア。このように:それは単にミドルウェアですので

'jwt.auth' => App\MyGetUserFromToken::class 
関連する問題