【问题标题】:Laravel guest middleware do not redirect properlyLaravel 来宾中间件未正确重定向
【发布时间】:2021-01-03 08:24:38
【问题描述】:

我使用 Laravel 5.6 创建了一个简单的身份验证 如果登录用户进入登录页面,我正在尝试将登录用户重定向到仪表板,如果他们进入仪表板页面,我正在尝试将访客重定向到登录页面。

我正在使用 laravel 默认中间件(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('/dashboard');
        }

        return $next($request);
    }
}

这是我的路线:

Route::group([ 'middleware' => ['guest','auth:lecturer'] ], function(){
    Route::get('/', "ViewCont\Auth\LoginController@login")->name("login");
    Route::post('/login', "FuncCont\Auth\LoginController@login")->name("login_f");
    Route::get('/register', "ViewCont\Auth\LoginController@register")->name("register");
    Route::post('/register', "FuncCont\Auth\LoginController@register")->name("register_f");
});


Route::group([ 'middleware' => ['check.user.session','auth:lecturer'], 'prefix' => 'dashboard'  ], function(){
    Route::get('/', "ViewCont\Admin\DashboardController@index")->name("dashboard");
});

当登录用户尝试访问登录页面时,一切正常,他们重定向到仪表板页面。但是,当访客尝试访问登录页面时,页面出现错误:页面未正确重定向

我做错了什么?

【问题讨论】:

  • 你正在使用一个中间件,如果他们通过了身份验证,就会将他们重定向,而如果他们没有通过身份验证,你会使用一个中间件......并且你有不同的警卫在玩
  • 我认为 return $next($request) 会继续这个过程
  • 为什么要将auth 中间件应用于登录路径?你是说你必须通过身份验证才能登录,但要通过身份验证你必须登录......

标签: php laravel


【解决方案1】:

应该有 2 个不同的中间件。 RedirectIfAuthenticated 将经过身份验证的用户从登录页面重定向,Authenticate 将未经过身份验证的用户重定向到登录页面。

因此,您似乎需要从登录页面中删除 'auth:lecturer' 中间件,因为它应该可供访客访问。

【讨论】:

  • 我需要为中间件指定自定义保护。这就是为什么我使用“auth:lecturer”(确定中间件使用的保护)
  • 是的,但看起来您会将访客从登录页面重定向到某个主页,然后将重定向到登录页面,因为用户未通过身份验证。我的意思是客人应该可以访问登录页面,尝试寻找另一种方式来绕过守卫。或者我完全不明白你想达到什么目的
  • 啊,是的……我终于修好了……谢谢
  • 你能指导我如何解决这个问题吗?因为我有默认登录名和学生登录名。如果学生无需登录即可访问,则需要转到学生登录
猜你喜欢
  • 2018-04-14
  • 1970-01-01
  • 2019-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-09
  • 1970-01-01
相关资源
最近更新 更多