Laravel 10 重定向到特定路线给出错误

问题描述 投票:0回答:1

使用 Laravel 10、Windows 10、Wamp。

我正在尝试将具有特定权限的用户重定向到与主页不同的页面。

或者,如果他们尝试从商店页面登录,则将他们重定向回商店页面。

尝试登录时,我收到此错误:

Symfony\Component\HttpFoundation\Response::setContent():参数 #1 ($content) 必须是 ?string 类型,Illuminate\Routing\Redirector 给予,召唤 C:\wamp64\www\highland10.local endor\laravel ramework\src\Illuminate\Http\Response.php 72号线

我将

LoginController
中的代码更改为其他内容,我提交,它工作正常,然后第二天,或者移动到另一台计算机,我收到错误。

我再次更改代码,工作正常,第二天或不同的计算机,同样的错误。

在我的路线文件中我有这个:

Route::group(['middleware' => 'auth', 'can:admin dashboard'], function () {
    Route::get('/bean', [AdminController::class, 'index'])->name('admin');
});

我尝试过的代码,在

LoginController

protected function authenticated($request, $user)
{        
    $previousUrl = Session::get('previousUrl', '/');
    
    $url = session()->get('url.intended');
    
    if($previousUrl != '/') {
        Session::forget('previousUrl');            
        return redirect($previousUrl);
    } else { 
        if (auth()->user()->can('admin dashboard'))
            return redirect('/bean'); // the problematic code
    }
    
    return redirect($this->redirectTo);
}

工作正常,但第二天就出现错误。

更改了代码,而不是:

return redirect('/bean');

更改为:

return to_route('admin');    

直到第二天都工作正常。有时它可以正常工作几天,然后突然出现错误。

有人可以帮忙吗?

laravel redirect
1个回答
0
投票

尝试重定向到命名路由并在会话中使用命名路由而不是 url:

protected function authenticated($request, $user)
{        
    $previousRoute = Session::get('previousRoute'); //store your route names instead of urls
    
    //$url = session()->get('url.intended'); // this line is redundant
    
    if($previousRoute != 'home') { //change 'home' to match your name for the '/' route
        Session::forget('previousRoute');            
        return redirect()->route($previousRoute);
    } else { 
        if (auth()->user()->can('admin dashboard')) {
            return redirect()->route('admin'); //using 'admin' route as per your example
        }
    }
    
    return redirect($this->redirectTo);
}
© www.soinside.com 2019 - 2024. All rights reserved.