“laldvel中的jwt中无法从请求中解析令牌”

时间:2017-02-21 09:23:15

标签: php laravel angular

我正面临“无法在Laravel的JWT中通过请求”错误解析令牌。

我在localhost(Windows 7中的Xampp)中尝试了相同的代码,但是在服务器上它无法正常工作。

我已在标头中传递了“授权”令牌,并且还更改了 .htaccess 文件。

请在角度2中检查请求中传递的令牌的下方屏幕截图。

enter image description here

以下是 .htaccess 文件。 (我还在root .htaccess文件和公共.htaccess文件中尝试了这个代码)

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /index.php/$1 [L]

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
</IfModule>

我已使用以下代码进行身份验证令牌。

public function image_upload(Request $request){
    try{
        if($user = JWTAuth::parseToken()->authenticate()){
            \Api::success(['data' => $user]);
        }else{
            \Api::error("User is not found.");
        }
    }
    catch(\Tymon\JWTAuth\Exceptions\TokenExpiredException $e){
        \Api::error(['type'=> 'expired','message' => 'Your login has been expired. Please login and try again.']);
        exit();
    }
    catch(\Tymon\JWTAuth\Exceptions\TokenInvalidException $e){
        \Api::error(['type'=> 'invalid','message' => $e->getMessage()]);
        exit();
    }
    catch(\Tymon\JWTAuth\Exceptions\JWTException $e){
        \Api::error(['type'=> 'invalid','message' => $e->getMessage()]);
        exit();
    }
}

1 个答案:

答案 0 :(得分:3)

由于Apache排除了Authorization标题,如果你需要节省时间,你可以将令牌传递给你的请求,然后在你的控制器中,检查你是否有令牌:

public function image_upload(Request $request){
    return $request->token;
.....
}

你有什么结果吗?如果您不这样做,则必须检查您的请求参数是否包含token字段。如果你在这个控制器中有令牌,那么你仍然可以使用parseToken()方法或简单地(可能用于调试目的)使用:

public function image_upload(Request $request){
    $user = JWTAuth::toUser($request->token));
    .......
}

我认为这应该足够了,唯一的错误可能是您已经将middleware应用于导致此问题的from keras import backend as K def rmspe(y_true, y_pred): sum = K.sqrt(K.mean(K.square( (y_true - y_pred) / K.clip(K.abs(y_true),K.epsilon(),None) ), axis=-1) ) return sum*100.

  

PS:我在Laravel 5.2 *

上试过这个

我希望这会有所帮助。