drrqwokuz71031449 2017-05-30 15:46
浏览 33
已采纳

Laravel 5.4中的其他auth中间件

I want to add additional middleware to user model. User table has row 'approved' which is boolean (default is false). So when user logins - middleware should check if 'approved' is equal to true. If not, redirect to error page. What i got so far:

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

So far middleware attached here:

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

However, it does not work. No errors as well.

  • 写回答

2条回答 默认 最新

  • duan0821 2017-05-30 15:54
    关注

    You're better off checking this when a user logins instead of using a middleware.

    Add this to the LoginController and perform any additional checks. This method will be called after the user successfully logs in.

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

    If you still insist on using middleware, then make sure you add the middleware in Kernel.php

    Add this in app/Http/Kernel.php

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

    You're also missing the return in your redirect.

    public function handle($request, Closure $next, $guard = null)
    {
        if(Auth::user()->approved != true){
            return redirect('/error');
        }
    
        return $next($request);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗