Laravel REST保护给定的方法,并使每个角色都可以访问



我有一个laravel项目,它提供了overrest api一些公共数据,另一方面登录的用户可以管理一些与成员资格相关的数据。

现在,在这个面板中,我有几个react组件。一些主题只是简单地获取异步数据,还有一些主题是与数据库交互,这意味着它们在用户角色的作用下修补、创建、删除数据。应该保护这些端点。

我读过关于圣地的文章,但我认为这种情况会让人不知所措。有没有其他方法可以保护这个api路由?

您可以使用laravel Auth轻松实现。如果没有api_token字段,您需要将其添加到用户表中。在用户注册时生成access_token。为了保护作为中间件的路由,请使用auth:api。

在app\Http\Kernel.php中,您需要将api密钥添加到$middlewareGroups

protected $middlewareGroups = [
'web' => [
AppHttpMiddlewareEncryptCookies::class,
IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
IlluminateViewMiddlewareShareErrorsFromSession::class,
AppHttpMiddlewareVerifyCsrfToken::class,
IlluminateRoutingMiddlewareSubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];

之后将中间件防护添加到路由

Route::group(['middleware' => 'auth:api'], function () {}

当你提出请求时,你需要将api_token参数添加到你的url中,例如:http://localhost/update?api_token=1234.这是我所知道的最简单的方法。您还可以将api_token作为请求主体的一部分发送,以确保安全。

您还需要更改卫士密钥内的config/auth.php添加此

'api' => [
'driver' => 'token',
'provider' => 'users',
],

您的配置需求看起来与此相似

'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],

最新更新