Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 6错误:输入登录路径时应用程序崩溃_Php_Laravel_Routes_Laravel 6 - Fatal编程技术网

Php Laravel 6错误:输入登录路径时应用程序崩溃

Php Laravel 6错误:输入登录路径时应用程序崩溃,php,laravel,routes,laravel-6,Php,Laravel,Routes,Laravel 6,我会尽可能多地解释我的问题。我刚刚创建了一个Laravel应用程序。当我以用户或管理员身份登录时(用户路径为,管理员路径为),我输入登录视图路径,即 它将我带到该页面:,并显示错误消息未找到页面 我没有在我的路线中添加任何路线/回家路线。我想要的是在输入登录路径时,如果用户已登录,则应保持在同一页面上。和admin的情况相同,而不是转到这个路径 以下是用户和管理员的路由: Route::get('/','HomeController@index')->name('home')->mi

我会尽可能多地解释我的问题。我刚刚创建了一个Laravel应用程序。当我以用户或管理员身份登录时(用户路径为,管理员路径为),我输入登录视图路径,即 它将我带到该页面:,并显示错误消息未找到页面

我没有在我的路线中添加任何路线/回家路线。我想要的是在输入登录路径时,如果用户已登录,则应保持在同一页面上。和admin的情况相同,而不是转到这个路径

以下是用户和管理员的路由:

Route::get('/','HomeController@index')->name('home')->middleware(['auth','XSS']);

Route::group(['middleware' => ['auth','admin']], function()
{ Route::get('/admin/dashboard','HomeController@home_page')->name('admin.home');
});
这是我的登录控制器:

    protected function redirectTo(){
  if (Auth::user()->user_type == 'admin') {
    //return 'admin.dashboard';
    return redirect('/admin/dashboard');
  }
  else {
    //return 'home';
    return redirect('/');
  }

}
和我的管理中间件

public function handle($request, Closure $next)
{
  if(Auth::user()->user_type == 'admin') //If usertype is admin
{
   return $next($request);
}
else {
  //  return redirect('home');
    return redirect()->route('/');
}
}

我只希望它在进入登录页面时保持登录状态。如果需要,我很乐意提供任何其他细节。任何建议/解决方案都将不胜感激。

您需要在loginController上重载已完成的redirectTo方法,并更新redirectIfAuthenticated以匹配您的逻辑

因此,请转到您的loginController并进行更新

protected function redirectTo() {your logic like you have done}
此外,您还需要更新redirectIfAuthenticated中间件以匹配您的逻辑

<?php

namespace App\Http\Middleware;

use App\Providers\RouteServiceProvider;

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(RouteServiceProvider::HOME);

}

return $next($request);

}

}

您需要在loginController上重载已执行的redirectTo方法,并更新redirectIfAuthenticated以匹配您的逻辑

因此,请转到您的loginController并进行更新

protected function redirectTo() {your logic like you have done}
此外,您还需要更新redirectIfAuthenticated中间件以匹配您的逻辑

<?php

namespace App\Http\Middleware;

use App\Providers\RouteServiceProvider;

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(RouteServiceProvider::HOME);

}

return $next($request);

}

}

在重定向身份验证中间件中编辑路由


如果发现您已经登录并尝试访问登录页面,它将重定向到/home。

在重定向验证中间件中编辑路由


如果发现您已经登录并尝试访问登录页面,它将重定向到/home。

谢谢大家的建议。我只是尝试了一些东西,它奏效了。 在RedirectIfAuthenticated.php文件中:

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

    return $next($request);
}
刚刚更改
返回重定向('/home')

返回重定向('/')


它成功了…

谢谢大家的建议。我只是尝试了一些东西,它奏效了。 在RedirectIfAuthenticated.php文件中:

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

    return $next($request);
}
刚刚更改
返回重定向('/home')

返回重定向('/')



它成功了…

您添加了登录路径吗?我看不到您的代码示例中定义的任何内容。我认为web.php文件中不需要登录路径。如果我错了,请纠正我。您是否添加了登录路径?我看不到您的代码示例中定义的任何内容。我认为web.php文件中不需要登录路径。如果我错了,请纠正我对不起这都是电话里说的。。。只是想帮忙。谢谢你的回复。在RouteServiceProvider中的何处添加此代码我们将更新到/在服务提供商中的主路由,但随后会在loginController上重载$redirectTo,并在loginController上重载redirectTo()。您能解释一下我们需要用哪些代码替换$redirectTo和redirectTo()我可能错了,但是你会想看看logincontroller上使用的trait中的逻辑,你会看到对home常量的引用。只是加载了那个函数。但是我很确定你没有重载$redirectTo属性,或者如果它没有设置默认值为'/home',对不起,这都是电话里的。。。只是想帮忙。谢谢你的回复。在RouteServiceProvider中的何处添加此代码我们将更新到/在服务提供商中的主路由,但随后会在loginController上重载$redirectTo,并在loginController上重载redirectTo()。您能解释一下我们需要用哪些代码替换$redirectTo和redirectTo()我可能错了,但是你会想看看logincontroller上使用的trait中的逻辑,你会看到对home常量的引用。只是加载了那个函数。但是,我很确定您没有重载$redirectTo属性,或者如果没有设置,则默认为“/home”,谢谢您的回答。我刚刚找到了一个解决办法。谢谢你的回答。我刚刚找到了一个解决办法。我想我是这么说的吗?为什么有必要添加您自己的答案?@Snapey我很感激您的答案,但您没有添加任何代码片段,我在您的答案之前解决了这个问题。再次谢谢你。我真的告诉你了。代码片段?斯内普,你只需要去掉“家”这个词,这就是为什么我对你的答案投了赞成票。如果你愿意的话,我会把你的答案标为被接受的答案。如果可能的话,请把我的问题投上一票。你认为我是这么说的吗?为什么有必要添加您自己的答案?@Snapey我很感激您的答案,但您没有添加任何代码片段,我在您的答案之前解决了这个问题。再次谢谢你。我真的告诉你了。代码片段?斯内普,你只需要去掉“家”这个词,这就是为什么我对你的答案投了赞成票。如果你愿意的话,我会把你的答案标为被接受的答案。如果可能的话,请投票表决我的问题。