我的模型:
admin.php
public function role()
{
return $this->belongsTo('AppRole');
}
在我的控制器上:
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 Middeware上:
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
和自定义登录系统的自定义护罩。我已经使用了一对一的关系,但是它给了我:
试图获得非对象的属性
您的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('/');
}