我的应用程序中有不同类型的用户。例如:超级管理员,客户,员工和人力资源。 现在我想给所有超级管理员访问权限,一些用于客户端,一些用于员工,一些用于HR。
让我们说我有3节 a)管理员工 b)管理客户 c)管理项目 d)管理指定
现在我想提供访问超级管理员a,b,c& d仅限客户C和仅限员工c& d而且对于人力资源而言只有一个。
我是通过检查用户表格中的用户类型来完成的。 (Not Right Way)
假设我有一个网址 localhost / myApp / staff [这可以通过超级管理员访问] 但是当我以客户端登录并点击上面的网址时,他/她就可以获得我想要限制的员工列表,并通过一些消息重新定向他。
我怎样才能在Laravel 5.4中实现这个目标。提前谢谢。
答案 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”的新字段或任何要进行身份验证的字段。