Laravel 5.3 不同用户表登录认证-优化

具体看这篇文章:
Laravel 5.3 不同用户表登录认证


需要优化的地方:不需要新增中间件,【后台管理认证中间件】部分全部去掉,使用框架自带的中间件传参就行了。


Admin/LoginController.php 中修改中间件:

$this->middleware('guest.admin', ['except' => 'logout']);

修改为:

$this->middleware('guest:admin', ['except' => 'logout']);

仅仅改了个冒号,冒号后面即为参数,给默认的guest中间件传参。


修改guest中间件App\Http\Middleware\RedirectIfAuthenticated.php:

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guard($guard)->check()) {
        switch ($guard) {
            case 'admin':
                return redirect('/admin');
                break;

            default:
                return redirect('/home');
                break;
        }

    }

    return $next($request);
}

根据guard名来重定向,已登陆时,访问登录页面跳转的地址。


修改路由:

Route::group(['middleware' => 'auth.admin'], function () {
    Route::get('/', 'Admin\IndexController@index');
});

为:

Route::group(['middleware' => 'auth:admin'], function () {
    Route::get('/', 'Admin\IndexController@index');
});

仅仅改了个冒号,冒号后面即为参数,给默认的auth中间件传参。


修改App\Exceptions\Handler.php的unauthenticated()方法:

protected function unauthenticated($request, AuthenticationException $exception)
    {
        if ($request->expectsJson()) {
            return response()->json(['error' => 'Unauthenticated.'], 401);
        }

        $guards = $exception->guards();
        $guard = ! empty($guards) ? $guards[0] : null;

        switch ($guard) {
            case 'admin':
                return redirect()->guest('admin/login');
                break;

            default:
                return redirect()->guest('login');
                break;
        }
    }

这里也是根据guard名来重定向,未登陆时,访问需要登陆的页面跳转的地址。

注:
默认的auth中间件(Illuminate\Auth\Middleware\Authenticate),在验证失败后,会抛出异常

throw new AuthenticationException('Unauthenticated.', $guards);

抛出异常后会触发App\Exceptions\Handler类的unauthenticated()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值