【发布时间】:2019-12-05 09:29:39
【问题描述】:
我想在用户登录并应用功能时检查用户类型
在我的middleware,我有这个代码
public function handle($request, Closure $next)
{
$user = Auth::user();
if ($user->isBasic()) {
$previous_session = $user->session_id;
if ($previous_session) {
\Session::getHandler()->destroy($previous_session);
}
Auth::user()->session_id = \Session::getId();
Auth::user()->save();
return redirect(route('home'));
}
return $next($request);
}
在我的User model,我有这个
public function isBasic()
{
return $this->role=='basic';
}
我已经在内核中注册了中间件
'basic' => \App\Http\Middleware\CheckSession::class,
然后我像这样将它传递给我的 LoginController
public function __construct()
{
$this->middleware('basic');
}
但是当它试图访问登录控制器时,它说
在 null 上调用成员函数 isBasic()
我是 Laravel 的初学者,我不知道该怎么做
【问题讨论】:
-
“登录前”表示还没有经过身份验证的用户,因为他们还没有登录,那么既然没有用户要检查,你会检查什么?
-
我是 Laravel 的新手,所以我想要的是能够在他们登录时进行检查,如果用户类型是基本的,则应该调用中间件中的函数。我知道我做错了什么,这就是我来这里寻求帮助的原因。我尝试在控制器中使用该功能,但它适用于所有用户类型
-
这是您必须在登录功能本身中检查的内容,类似于
authenticated方法,该方法在他们登录到 LoginController之后被调用 -
你可以使用 $this->middleware('basic')->except([''showLoginForm' , 'login']);您正在检查经过身份验证的用户,而没有用户登录您的应用