Eli*_*lib 2 api laravel vue.js
我有使用 VUEJS 作为前端的 Laravel 应用程序,我通过创建 API 路由来获取数据。因此,例如获取帖子数据的路线将是http://localhost/api/posts
保护我的路线的最佳方法是什么?
我在 laravel 文档上看到有:API 认证https://laravel.com/docs/5.8/api-authentication 也是 Passport https://laravel.com/docs/5.8/passport
例如,现在任何用户都可以访问路由http://localhost/api/posts ,他将获得包含所有帖子数据的 json。
我想保护它并只允许来自我的 VUEJS 组件的内部 api 请求来获取数据
我假设您将使用 Laravel auth 路由进行身份验证,并且在身份验证之后,您到达的下一个视图是包含所有 Vue 组件的视图。
解决方案很简单,即使是在文档上,也应该说明必要的步骤。
我们需要:
composer require laravel/passportphp artisan migratephp artisan passport:install第四步比较复杂。我们需要打开我们的 User.php 模型文件。首先我们需要导入 HasApiTokens 并告诉模型使用它。
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
.......
}
Run Code Online (Sandbox Code Playgroud)
然后在我们的config/auth.php我们需要修改api数组并将驱动程序更改为passport
'api' => [
//for API authentication with Passport
'driver' => 'passport',
'provider' => 'users',
],
Run Code Online (Sandbox Code Playgroud)
然后app/Http/Kernel.php我们需要$middlewareGroups在 key 中的数组中添加一个中间件 web。
protected $middlewareGroups = [
'web' => [
................
//for API authentication with Passport
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],
Run Code Online (Sandbox Code Playgroud)
现在我们可以auth:api在我们的 api 路由上使用中间件。
Route::middleware('auth:api')->group( function(){
...your routes here
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3614 次 |
| 最近记录: |