我有以VUEJS为前端的Laravel应用程序,我是通过创建API路由来获取数据的。因此,例如,获取posts数据的路径是http://localhost/api/posts
保护我的路线的最好方法是什么?
我在laravel文档中看到了: API athentication https://laravel.com/docs/5.8/api-authentication也有Passport https://laravel.com/docs/5.8/passport
例如,现在任何用户都可以到达路由http://localhost/api/posts,他将获得包含所有posts数据的json。
我想保护它,并且只允许来自我的VUEJS组件的内部api请求来获取数据。
发布于 2019-04-23 18:49:10
我假设您将使用Laravel路由进行身份验证,在身份验证之后,您到达的下一个视图是一个包含所有Vue组件的视图。
解决方案很简单,即使是在文档上,也应该澄清必要的步骤。
我们需要:
composer require laravel/passport
php artisan migrate
php artisan passport:install
第四步比较复杂。我们需要打开User.php模型文件。首先,我们需要导入HasApiTokens并告诉模型使用它。
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
.......
}
然后,在我们的config/auth.php
上,我们需要修改api数组并将驱动程序更改为passport
。
'api' => [
//for API authentication with Passport
'driver' => 'passport',
'provider' => 'users',
],
然后,在我们的app/Http/Kernel.php
上,我们需要在键web
中向$middlewareGroups
数组添加一个中间件。
protected $middlewareGroups = [
'web' => [
................
//for API authentication with Passport
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],
现在,我们可以在api路由上使用auth:api
中间件。
Route::middleware('auth:api')->group( function(){
...your routes here
});
发布于 2019-04-24 10:59:42
这就是CSRF令牌所做的,它与API授权所做的不完全相同
CSRF令牌:
若要保护(内部) API或访问点不受跨站点访问的影响,请参见伪造。
CSRF令牌过期并在随机时间内生成,这将使程序访问困难。
API授权:
该API设计用于其他程序,您希望保护它们不受未经授权的访问的影响。
由于API令牌的过期和生成是由管理员手动处理的,因为您需要将这个API令牌放在HTML中才能正常工作,所以这里搜索的并不是API令牌。
更多关于Laravel中CSRF保护的详细信息,请参阅:Laravel CSRF生产文件
一般情况下,我们将保护所有路由,并默认设置路由
https://stackoverflow.com/questions/55817534
复制相似问题