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

Laravel 8多重身份验证未进行身份验证和重定向

姚星河
2023-03-14

我的管理员控制器扩展了控制器类,在那里我使用方法加载视图页面并传递保护。config/auth.php也通过添加管理员保护和提供程序进行了修改。在app/Actions/Fortify文件夹中,我添加了AttemptToAuthenticate和ReDirectIfTwoFactorAuthenticate类,并更改了命名空间。我的管理员控制器还扩展了Guard。用户的重定向中间件和管理员的重定向中间件通过将保护传递给句柄方法中的重定向来进行重定向。所有中间件都已注册。在提供程序/FortifyServiceProvider.php文件中,我将类添加到寄存器中。

    **FortifyServiceProvider.php**
        public function register()
            {          
                $this->app->when([
                    adminController::class,
                    AttemptToAuthenticate::class,
                    RedirectIfTwoFactorAuthenticatable::class
                   
                ])->needs(StatefulGuard::class)->give(function(){
                    return Auth::guard('admin');
                });
            }
    **LoginResponse.php:**      
        public function toResponse($request)
            {
                return $request->wantsJson()
                            ? response()->json(['two_factor' => false])
                            : redirect()->intended('admin/dashboard');
            }
    **RouteServiceProvider.php**   
     public static function redirectTo($gaurd){
            return $guard."/dashboard";
        }
    **Web.php**
        Route::group(['prefix'=>'admin','middleware'=>['admin:admin']],function(){
                Route::get('/login',[adminController::class,'loginform']);
                Route::post('/login',[adminController::class,'store'])->name('admin.store');
            }
        );
        Route::middleware(['auth:sanctum,web', 'verified'])->get('/dashboard', function () {
            return view('dashboard');
        })->name('dashboard');
    
        Route::middleware(['auth:sanctum,admin', 'verified'])->get('/admin/dashboard', function () {
            return view('dashboard');
        })->name('dashboard');
    **Login.blade.php**    
    <form action="{{isset($guard)? url($guard.'/login'):route('login')}}" method='POST'>
                      @csrf

但是当我登录时,没有错误或重定向。它只是停留在同一个页面上。

共有1个答案

徐帅
2023-03-14

在您的RouteServiceProvider.php文件中,有一个错别字错误

 **RouteServiceProvider.php**   
     public static function redirectTo($gaurd){
            return $guard."/dashboard";
        }

必须是$Guard而不是$gaurd

 类似资料:
  • 我正在laravel中创建一个多身份验证系统,其中有两种类型的用户:管理员(由我创建)和用户(使用本地laravel身份验证系统)。 如果我以用户身份登录,当我尝试访问登录页面时,当我已经登录,它会将我重定向回仪表板,但如果我以管理员身份登录,当我再次访问管理员登录页面时,它会让我再次登录,尽管已经作为管理员登录。 以下是我的重定向身份验证类代码: 有人能解释一下发生了什么事吗?

  • 我正在创建一个laravel应用程序与自定义多重身份验证。我正在跟随这篇文章进行多重身份验证。https://pusher.com/tutorials/multiple-authentication-guards-laravel 我已经创建了登录和注册控制器定义的警卫和提供者,一切正常,我能够注册用户并登录他们。我写了一页(http://127.0.0.1:8000/admin)只有当管理员登录时

  • 在我的LaravelV5.4项目中,我有两个模型:用户和管理员。 在config/auth.php中,我向警卫和提供者添加了admin,如下所示: 现在在AdminController类中,我想使用Auth::true函数,但默认情况下它使用用户表。我可以在config/auth.php中更改默认值,如下所示,它可以工作,但在这种情况下,我不能为用户使用auth::trunt。 我想将用户设置为默

  • 身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工

  • 遵循这个指南:https://www.youtube.com/watch?v=bqkt6eSsRZs 添加了从laravel docs的auth路由 创建登录/注册视图 创建 /home路线 自定义AuthController: 尝试访问身份验证/登录时,我遇到以下错误: 请求中出现错误异常。php第775行:。。未根据请求设置会话存储。 已将身份验证路由移动到中间件组。 成功注册,在数据库和会话

  • 我试图在一个反应式Spring Boot应用程序中配置一个Spring Security性,该应用程序具有一个Vuejs前端,在未经身份验证时将用户重定向到外部OpenID提供程序(用于身份验证)。在用户通过OpenID提供程序进行身份验证并重定向回应用程序(前端)后,将根据OpenID提供程序的响应创建用户名密码身份验证令牌(身份验证),并手动进行身份验证。 但是,在执行此操作时,应用程序似乎无