使用 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');
直到第二天都工作正常。有时它可以正常工作几天,然后突然出现错误。
有人可以帮忙吗?
尝试重定向到命名路由并在会话中使用命名路由而不是 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);
}