laravel 中的护照详细信息 api 在本地主机上可以正常工作,但不能在共享主机上运行

Posted

技术标签:

【中文标题】laravel 中的护照详细信息 api 在本地主机上可以正常工作,但不能在共享主机上运行【英文标题】:Passport details api in laravel work fine on local host but not shared hosting 【发布时间】:2019-11-29 15:28:20 【问题描述】:

我用护照创建了 api。我的所有 api 在 localhost 上运行良好。但是当我在共享主机上部署时,我的登录和注册 api 工作正常,但详细信息 api 不起作用。我重写了 htacess 规则,但什么也没发生。为什么会出现这个问题?

这是我的示例代码

控制器类

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller; 
use App\User; 
use Illuminate\Support\Facades\Auth; 
use Validator;
class UserController extends Controller

 public $successStatus = 200;



 public function login() 
    if(Auth::attempt(['mobile' => request('mobile'), 'password' => request('password')])) 
        $user = Auth::user(); 
        $success['token'] =  $user->createToken('quiz')-> accessToken; 
        return response()->json(['success' => $success], $this-> successStatus); 
     
    else 
        return response()->json(['error'=>'Unauthorised'], 401); 
     




 public function details() 
 
    $user = Auth::user()`enter code here`; 
    return response()->json(['success' => $user], $this-> successStatus); 
 

路线

<?php

 use Illuminate\Http\Request;

 Route::post('register', 'UserController@register');

 Route::post('login', 'UserController@login');

 Route::group(['middleware' => 'auth:api'], function()
 
 Route::post('details', 'UserController@details');
);


);

型号

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable

use Notifiable;
use HasApiTokens;


protected $fillable = [
    'name', 'mobile', 'password','city','image',
];

protected $hidden = [
    'password', 'remember_token',
];




我收到错误 InvalidArgumentException: Route [login] not defined。

【问题讨论】:

遇到同样的问题,你解决了吗? @Majid Alaeinia 在标头上使用accept = application/json时,收到一条消息Unauthenticated @MohamedRaza 我不是提出这个问题的人,我只是编辑了这个问题,但你试过php artisan passport:install 吗?如果你收到Unauthenticated,你应该重新考虑你持有的令牌。 是的,我在服务器上安装了护照,但在实时的 apache 服务器上还不能使用 【参考方案1】:

请使用以下内容更改 Apache config filr 或 .htaccess 文件,希望它能正常工作:

重写引擎开启 RewriteCond %HTTP:Authorization ^(.+)$ RewriteRule .* - [E=HTTP_AUTHORIZATION:%HTTP:Authorization]

详情请访问:https://github.com/laravel/passport/issues/532

【讨论】:

以上是关于laravel 中的护照详细信息 api 在本地主机上可以正常工作,但不能在共享主机上运行的主要内容,如果未能解决你的问题,请参考以下文章

混淆 Laravel 护照 API 安全性的工作原理

Laravel 护照出现 401 Unauthenticated 错误

如何在节点/套接字应用程序中验证 laravel 护照 API 令牌?

laravel 5.3 护照和角度存储访问令牌

在 laravel 护照中注销用户

使用外部 Laravel 护照流明 api 进行 Laravel 客户端身份验证