我正面临“无法在Laravel的JWT中通过请求”错误解析令牌。
我在localhost(Windows 7中的Xampp)中尝试了相同的代码,但是在服务器上它无法正常工作。
我已在标头中传递了“授权”令牌,并且还更改了 .htaccess 文件。
请在角度2中检查请求中传递的令牌的下方屏幕截图。
以下是 .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();
}
}
答案 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 *
上试过这个
我希望这会有所帮助。