繁体   English   中英

Laravel 5.4中的其他身份验证中间件

[英]Additional auth middleware in Laravel 5.4

我想向用户模型添加其他中间件。 用户表中的“已批准”行为布尔值(默认为false)。 因此,当用户登录时-中间件应检查'approved'是否等于true。 如果不是,请重定向到错误页面。 我到目前为止所得到的:

<?php

namespace App\Http\Middleware;

use Closure;
use Auth;

class ConfirmedMiddleware
{
    public function handle($request, Closure $next, $guard = null)
    {
        if(Auth::user()->approved != true){
            redirect('/error');
        }
        return $next($request);
    }
}

到目前为止,这里附带了中间件:

Route::get('/home', 'HomeController@index')->middleware('confirmed')->name('home');

但是,它不起作用。 也没有错误。

您最好在用户登录时而不是使用中间件进行检查。

将此添加到LoginController并执行所有其他检查。 用户成功登录后,将调用此方法。

protected function authenticated($request, $user)
{
    if($user->approved != true){
        return redirect('/error');
    }
}

如果您仍然坚持使用中间件,请确保在Kernel.php添加中间件

将此添加到app/Http/Kernel.php

'confirmed' => \App\Http\Middleware\ConfirmedMiddleware::class,

您还缺少重定向中的返回值。

public function handle($request, Closure $next, $guard = null)
{
    if(Auth::user()->approved != true){
        return redirect('/error');
    }

    return $next($request);
}

您缺少重定向中的返回,应该是:

return redirect('/error'); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM