Php Laravel 6错误:输入登录路径时应用程序崩溃
我会尽可能多地解释我的问题。我刚刚创建了一个Laravel应用程序。当我以用户或管理员身份登录时(用户路径为,管理员路径为),我输入登录视图路径,即 它将我带到该页面:,并显示错误消息未找到页面 我没有在我的路线中添加任何路线/回家路线。我想要的是在输入登录路径时,如果用户已登录,则应保持在同一页面上。和admin的情况相同,而不是转到这个路径 以下是用户和管理员的路由:Php Laravel 6错误:输入登录路径时应用程序崩溃,php,laravel,routes,laravel-6,Php,Laravel,Routes,Laravel 6,我会尽可能多地解释我的问题。我刚刚创建了一个Laravel应用程序。当我以用户或管理员身份登录时(用户路径为,管理员路径为),我输入登录视图路径,即 它将我带到该页面:,并显示错误消息未找到页面 我没有在我的路线中添加任何路线/回家路线。我想要的是在输入登录路径时,如果用户已登录,则应保持在同一页面上。和admin的情况相同,而不是转到这个路径 以下是用户和管理员的路由: Route::get('/','HomeController@index')->name('home')->mi
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我很感激您的答案,但您没有添加任何代码片段,我在您的答案之前解决了这个问题。再次谢谢你。我真的告诉你了。代码片段?斯内普,你只需要去掉“家”这个词,这就是为什么我对你的答案投了赞成票。如果你愿意的话,我会把你的答案标为被接受的答案。如果可能的话,请投票表决我的问题。