当前位置: 首页 > 知识库问答 >
问题:

Laravel来宾中间件无法正确重定向

壤驷棋
2023-03-14

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

我使用laravel默认中间件(重定向):

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

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

我到底做错了什么?

共有1个答案

颜志业
2023-03-14

应该有两种不同的中间产品RedirectIfAuthenticated登录页面重定向经过用户身份验证的用户,并将未经身份验证的用户重定向到登录页面。

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

 类似资料:
  • 我有一个小难题,我正在尝试建立一个登录系统,它使用laravel auth脚手架将普通用户与管理员用户区分开来。 问题是它在中间件中处于无限重定向循环中。 在我按下登录按钮后,它会不断重定向到一条路线,问题是,我如何才能用“laravel方法”或任何其他方法解决这个问题。 这是我的控制器:1。基本家庭控制器: 主管理控制器-入口控制器: 登录控制器(默认的一个从auth scaffolding-由

  • 我有一些流浪共享文件夹的问题,我的基本系统是Ubuntu13.10桌面。 下面是完整的过程后: 我的Vagrantfile配置是: 个性化文件是: 在Vagrant中启用了以下插件:

  • 我正在用Laravel 8制作一个论坛,基本上每当用户在这个论坛上提问时,它应该被重定向到这个问题。 我还想使重定向过程基于问题的字段。 因此,为了做到这一点,我在方法的末尾添加了以下内容: 下面是看问题的路线: 然后我在控制器编码: 但现在的问题是,当我尝试添加新问题时,该问题将成功添加,但它会将我重定向到页面。重定向后的URL也如下所示: 正如你所看到的问题没有正确添加! 那么这里出了什么问题

  • 我有多条带有评论的路线,当我单击“回复”时,我会被重定向到一条路线,在那里我可以发布对评论的回复。我如何正确地存储来自我所在地的路线,然后在发布回复后重定向回该路线? 我考虑将URL::previous作为参数传递,并将其存储到隐藏的输入中,但如果用户刷新页面,它将变为空。另一种方法可能是存储在会话中,但我不知道如何可靠地使其过期。。。

  • Localhost很好,但上传到服务器时不工作 %pdf-1.3 1 0 obj<>Endobj2 0 obj<>Endobj3 0 obj<>>/Mediabox[0.000 0.000 595.280 841.890]>>Endobj4 0 obj<>stream x 2 300 p@&b m-l l,br b 5 jr k drr f b k endstream endobj 8 0 obj

  • 我试图设置cookie来定义用户首选的语言。我通过一个指向助手控制器的链接做到了这一点: /设置区域设置/{locale} 我知道这是正确的,因为如果我这样做: 它显示所选择的正确区域设置。所以下一步是使用中间件实际应用这个选择的语言环境,我把它命名为“设置语言环境”: 但如果我执行 在中间件中,它读取所有加扰的cookie。所以我的问题是为什么它会这样做,我如何从这里正确地读取cookie?