【问题标题】:what logic in RedirectIfAuthenticated in Laravel 5.6?Laravel 5.6 中 RedirectIfAuthenticated 的逻辑是什么?
【发布时间】:2019-05-16 08:56:16
【问题描述】:

我有 3 个用户,“admin”、“mahasiswa”和“dosen”(不同的表)。我想要例如用户“admin”已经登录访问主链接(例如:localhost),然后重定向到 localhost/admin/home。现在,当用户登录并访问主页(本地主机)时,将再次显示登录表单。谢谢

这个 RedirectIfAuthenticated :

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/home');
        }

        return $next($request);
    }
}

这是 Auth.PHP

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
        'mahasiswa' => [
            'driver' => 'session',
            'provider' => 'mahasiswa',
        ],
        'dosen' => [
            'driver' => 'session',
            'provider' => 'dosen',
        ],
    ],

    

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],

        'mahasiswa' => [
            'driver' => 'eloquent',
            'model' => App\Mahasiswa::class,
        ],
        'dosen' => [
            'driver' => 'eloquent',
            'model' => App\Dosen::class,
        ],
    ],

【问题讨论】:

    标签: laravel authentication middleware


    【解决方案1】:

    您可以根据 $guard 对中间件进行检查,您可以执行以下操作:

        public function handle($request, Closure $next, $guard = null)
        {
            if (Auth::guard($guard)->check()) {
                if($guard == 'mahasiswa')
                    return redirect('/mahasiswa/home');
                elseif($guard == 'dosen')
                    return redirect('/dosen/home');
                elseif($guard == 'web')
                    return redirect('/admin/home');
                else
                    return redirect('/home');
            }
    
            return $next($request);
        }
    

    【讨论】:

    • 我试过了,但是没有重定向,怎么回事?
    猜你喜欢
    • 2021-01-16
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 2010-09-26
    • 2011-09-07
    • 2010-11-10
    • 2014-07-19
    相关资源
    最近更新 更多