如何限制用户在laravel 5.4

时间:2017-06-01 10:04:26

标签: php laravel laravel-5.4

我的应用程序中有不同类型的用户。例如:超级管理员,客户,员工和人力资源。 现在我想给所有超级管理员访问权限,一些用于客户端,一些用于员工,一些用于HR。

让我们说我有3节 a)管理员工 b)管理客户 c)管理项目 d)管理指定

现在我想提供访问超级管理员a,b,c& d仅限客户C和仅限员工c& d而且对于人力资源而言只有一个。

我是通过检查用户表格中的用户类型来完成的。 (Not Right Way)

假设我有一个网址 localhost / myApp / staff [这可以通过超级管理员访问] 但是当我以客户端登录并点击上面的网址时,他/她就可以获得我想要限制的员工列表,并通过一些消息重新定向他。

我怎样才能在Laravel 5.4中实现这个目标。提前谢谢。

3 个答案:

答案 0 :(得分:1)

在人员网址的功能中检查用户的类型:

function staff(){
    if(Auth::user ! = 'super-admin')
        return redirect('/')
    }
    else{
       //show the staff
    }

答案 1 :(得分:1)

你需要使用中间件。

参见文档: https://laravel.com/docs/5.4/middleware

一个小例子

.iphone5.black

使用这样的中间件,如果用户是管理员,他可以进入页面,如果不是,它将在主页上重定向。

isAdmin是一个函数,你需要在你的用户模型中创建。

public function handle($request, Closure $next)
{
  $user = $request->user();

  if ($user && $user->isAdmin())
  {
    return $next($request);
  }
  return new RedirectResponse(url('/home'));

}
}

答案 2 :(得分:0)

您需要检查此页面Authenticate A User Instance

验证用户实例

如果需要将现有用户实例记录到应用程序中,可以使用用户实例调用login方法。给定对象必须是Illuminate \ Contracts \ Auth \ Authenticatable合同的实现。

Auth::login($user);
// Login and "remember" the given user...
Auth::login($user, true);`

当然,您可以指定要使用的防护实例:

Auth::guard('admin')->login($user);

您可以按照Laravel文档或添加一个名为“role”的新字段或任何要进行身份验证的字段。