Laravel 5.4中的其他auth中间件

时间:2017-05-30 15:46:28

标签: php laravel authentication laravel-5.4

我想在用户模型中添加其他中间件。用户表已经获得批准'这是布尔值(默认为false)。因此,当用户登录时 - 中间件应检查是否已批准'等于真。如果没有,请重定向到错误页面。到目前为止我得到了什么:

<?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');

然而,它不起作用。没有错误。

2 个答案:

答案 0 :(得分:3)

当用户登录而不是使用中间件时,最好检查一下。

将其添加到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);
}

答案 1 :(得分:1)

你错过了重定向的回复,应该是:

return redirect('/error');