自定义 Laravel auth 中间件

Fel*_*ome 5 php middleware laravel

在我的users表中,有一列rank对应于用户的权限。如果rank > 0,用户可以登录并继续,因为0inrank意味着他们被(暂时)阻止或不活动。所以我需要的是定制auth中间件,这样只有排名> 0才会被验证。

我对此做了一些研究,但没有找到准确放置代码的位置。

编辑:我之前发现了如何手动验证具有附加要求的用户(例如rank > 0),但是,我使用的是 laravels 内置功能,所以这没有多大帮助:

if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) {
    // The user is active, not suspended, and exists.
}
Run Code Online (Sandbox Code Playgroud)

active在这种情况下(来源:laravel 文档),但可以调整)。

Luk*_*vic 1

app/http/middleware你的调用中有中间件RedirectIfAuthenticated

您必须将其编辑为如下内容:

if (Auth::check() && Auth::user()->rank > 0) {
    return $next($request);
}
return redirect('/home');
Run Code Online (Sandbox Code Playgroud)

另外,如果您想像您编写的那样手动验证用户身份,您可以检查用户对象上的级别和密码,然后使用

Auth::login($user)
Run Code Online (Sandbox Code Playgroud)