1

在我的应用程序中,用户可以创建按相关组织者 ID 分类的事件。

我想检查提交创建新活动的请求的用户是否有权访问他们为其创建活动的组织者。

例如:

$organiser_id = $request->input('organiser_id');
if($user->hasOrganiser($organiser_id)) {
    // User has permission
}

显然,以上内容可以在我的控制器中使用,但理想情况下,我想在我的 EventPolicy 类或 EventRequest 中实现这一点。

在此先感谢您的帮助。

4

2 回答 2

2

Laravel 提供了很多方法来解决这个问题,你可以随时查看文档,在文档中你会发现控制器(你可以排除)、模型和中间件中的检查。

检查授权操作使用策略

您始终可以使用中间件来处理 HTTP 请求,然后再点击您的应用程序,从而更好地控制您的应用程序。

Laravel 包含一个中间件,它可以在传入请求到达您的路由或控制器之前授权操作。默认情况下,为 Illuminate\Auth\Middleware\Authorize 中间件分配了 App\Http\Kernel 类中的 can 键。

/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return mixed
 */
public function handle($request, Closure $next)
{
    if ($request->age <= 200) {
        return redirect('home');
    }

    return $next($request);
}

按照链接的说明将其添加到路由文件中,以便您可以检查请求并应用您的防护。

Route::post('/post', function () {
// The current user may create posts...
})->middleware('can:create,App\Post');

您也可以在第一个链接中检查模型方式。

于 2018-03-03T16:47:14.553 回答
0

我正在旅行自动取款机,但我认为这会对您有所帮助。

Laravel 使用了一个名为 Auth 的类,因此你可以像这样静态调用该类: Auth::id()

更多信息: https ://laravel.com/docs/5.6/authentication

希望这可以帮助。

于 2018-03-03T16:44:39.207 回答