借助Entrust,我实现了如何在登录后通过在Authcontroller.php
中添加此方法将用户重定向到自己的信息中心
protected function authenticated()
{
if(\Auth::user()->hasRole(['super_admin',]) ) {
return redirect('/dashboard');
} else if(\Auth::user()->hasRole(['staff_admin']) ) {
return redirect('/staff/dashboard');
} else if(\Auth::user()->hasRole(['subadmin_admin']) ) {
return redirect('/subadmin/dashboard');
}
}
我现在面临的挑战是,例如。如果员工已登录并重定向到他的仪表板
domain.com/staff/dashboard
但如果他从url手动删除人员并尝试访问Super-Admin Dashboard ,那么Entrust会抛出403错误,但我想将他重定向到他的信息中心,并显示“你不是授权”。
我尝试在RedirectIfAuthenticated中间件中实现相同的代码,但是因为hasRole在Null上调用它会产生错误。
答案 0 :(得分:0)
您的DashboardController添加构造函数。
示例代码
class UserController extends Controller
{
public function __construct()
{
$this->middleware(['role:super_admin']);
}
public function index()
{
return view('dashboard');
}
}
然后,错误文件夹添加403.blade.php,如下所示:
<!DOCTYPE html>
<html>
<head>
<title>Be right back.</title>
<link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css">
<style>
html, body {
height: 100%;
}
body {
margin: 0;
padding: 0;
width: 100%;
color: #B0BEC5;
display: table;
font-weight: 100;
font-family: 'Lato', sans-serif;
}
.container {
text-align: center;
display: table-cell;
vertical-align: middle;
}
.content {
text-align: center;
display: inline-block;
}
.title {
font-size: 72px;
margin-bottom: 40px;
}
</style>
</head>
<body>
<div class="container">
<div class="content">
<div class="title">You are not authorized.</div>
</div>
</div>
</body>
</html>