关于在控制器中检查权限问题

是这样的,我需要在控制器的不同方法检查不同的权限, 我应该如何返回这些提示。

public function create()
{
    // 这里我如何在检查出权限不足,返回上一页? 
    $this->checkPermission('create admin');
    $roles = Role::where('guard_name', 'admin')->get();

    return view('admin.admins.create', compact('roles'));
}


public function edit(Admin $admin)
{
    $this->checkPermission('edit admin');

    $roles = Role::where('guard_name', 'admin')->get();

    return view('admin.admins.edit', compact('admin', 'roles'));
}

private function checkPermission($permission)
{
    if (! $this->guard()->user()->can($permission)) {

        return back()->with('status', '权限不足');
    }
}

觉得如果每一个方法都写if有点那什么。有没有更优雅的处理方法?

婷婷同学_
浏览 477回答 4
4回答

梵蒂冈之花

添加一个middleware ,在middleware里处理,如果有权限next(),没有权限就提示无权限。

RISEBY

我打算使用的方法是这样的: private function checkPermission($permission) { if (! $this->guard()->user()->can($permission)) { abort(404); } }

沧海一幻觉

可以创建一个中间件, 设置时如下: Route::get('', ['middleware' => 'check:权限名字']); class check { public function handle($req, $next, $perName) { if (判断权限) { return 如果不通过的话. } return $next($req); } }
打开App,查看更多内容
随时随地看视频慕课网APP