1.首先保證你的config/auth.php
中 guards
的 api
的 driver
選項改為 passport
2.注冊中間件,在 app/Http/Kernel.php
文件中的 $routeMiddleware
數組中添加如下中間件
protected $routeMiddleware = [ 'client.credentials'=>\Laravel\Passport\Http\Middleware\CheckClientCredentials::class, ];
然后在需要認證接口路由文件 routes/api.php
前面加上這個中間件。
Route::group([ 'middleware' => ['client.credentials']], function () { });
3.此時訪問 /api/user 就會報 {"message":"Unauthenticated."}
加上 accessToken 訪問就可以訪問到了
GET 方式 /api/user 'headers' => [ 'Accept' => 'application/json', 'Authorization' => 'Bearer '.$accessToken, ],
我在使用postman請求接口的時候 選擇Authorization下的Bearer Token,請求還是報 Unauthenticated
最后發現是Authorization類型選錯了,應該選擇Auth2.0,Add authorization data to Request Headers,添加Access Token,然后訪問,就可以啦
如果還是 Unauthenticated,可以考慮一下配置文件了
可以查看日志,發現報一下錯誤:
Options FollowSymLinks and SymLinksIfOwnerMatch are both off, so the Rewrite
比如我們看看一個目錄的目錄配置:
<Directory "D:/www"> #Options Indexes FollowSymLinks #Options FollowSymLinks Options Indexes AllowOverride None Order allow,deny Allow from all </Directory>
根據以上的報錯可以看出是因為FollowSymLinks
禁用了,這就好說了,在配置中添加 Options FollowSymLinks 就可以啦
這里需要注意的是,出這個錯誤是因為
url中去除了 index.php 導致的
之前:aaa.com/index.php/api/vi/list
現在:aaa.com/api/vi/list
擴展:
線上項目為了完全着想,當根目錄下沒有 index.html 文件時,會顯示目錄結構,這樣顯然不可以,因此需要設置讓他不顯示,如果想實現以上效果,就可以將Options 中 Indexes去掉就好啦
Indexes 的作用就是當該目錄下沒有 index.html 文件時,就顯示目錄結構,去掉 Indexes,Apache 就不會顯示該目錄的列表了。