为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
婷婷同学_ 2019-03-05 22:31:25
是这样的,我需要在控制器的不同方法检查不同的权限, 我应该如何返回这些提示。 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有点那什么。有没有更优雅的处理方法?
查看完整描述

4 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

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

查看完整回答
反对 回复 2019-03-18
?
RISEBY

TA贡献1856条经验 获得超5个赞

我打算使用的方法是这样的:

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

        abort(404);
    }
}
查看完整回答
反对 回复 2019-03-18
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

可以创建一个中间件, 设置时如下:

Route::get('', ['middleware' => 'check:权限名字']);

class check
{
    public function handle($req, $next, $perName)
    {
        if (判断权限) {
        
            return 如果不通过的话.
        }
        return $next($req);
    }

}
查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 476 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信