我的模特:
Admin.php
public function role()
{
return $this->belongsTo('App\Role');
}
在我的控制器上
LoginController.php
protected function sendLoginResponse(Request $request)
{
$request->session()->regenerate();
$this->clearLoginAttempts($request);
foreach($this->guard()->user()->role as $role)
{
if($role->name=='SuperAdmin')
{
return redirect(route('super.admin.index'));
}
elseif ($role->name == 'Admin')
{
return redirect(route('super.admin.index'));
}
}
}
在我的SuperAdmin中间件上:
public function handle($request, Closure $next)
{
$role=Auth::user()->role;
if (is_null($role)) {
return redirect(route('/'));
}
if($role->name=='SuperAdmin')
{
return $next($request);
}
return redirect('/');
}
}
我创建了一个名为Admin
的自定义防护和自定义登录系统。我已经使用了一对多关系,但这给了我:
试图获取非对象的属性
答案 0 :(得分:0)
您的role
关系是belomgsTo
。在这种情况下,$this->guard()->user()->role
返回Role
对象的实例或null。
protected function sendLoginResponse(Request $request)
{
$request->session()->regenerate();
$this->clearLoginAttempts($request);
$role = $this->guard()->user()->role;
if (is_null($role)) {
return redirect(route('super.admin.index'));
}
if($role->name=='SuperAdmin') {
return redirect(route('super.admin.index'));
} elseif ($role->name == 'Admin') {
return redirect(route('super.admin.index'));
}
}
在中间件中
public function handle($request, Closure $next)
{
if (is_null(Auth::user())) {
return redirect(route('/'));
}
$role=Auth::user()->role;
if (is_null($role)) {
return redirect(route('/'));
}
if($role->name=='SuperAdmin')
{
return $next($request);
}
return redirect('/');
}