php Laravel redirect::route在页面加载之间显示消息

qzlgjiam  于 2023-04-19  发布在  PHP
关注(0)|答案(6)|浏览(143)

我目前正在使用Laravel开发一个Web应用程序,该应用程序直到最近都运行得非常好。我不知道是什么触发了它,但这里有一个我遇到的问题的摘要:
登录使用的工作,因为我有一个AccountController,它可以做到这一点:

$auth = Auth::attempt(array(
    'username' => Input::get('username'),
    'password' => Input::get('password'),
    'active'=>1);
if ($auth) {
     return Redirect::route('home');
}

return Redirect::route('account-sign-in');

回家的路看起来是这样的:

Route::get('/', array('as'=>'home', 'use'=>'HomeController@show'));

应用程序通常会在成功登录后立即返回主页。在我的home.blade.php中,我会有一个@if(Auth::check()),以确保一旦用户登录,主页将提供一组不同的文本。
然而最近,我注意到在提交登录请求后,有一个中间页面显示一条消息“Redirecting to http://localhost.com/”。在此之前没有该消息,并且错误开始与此消息沿着显示。
我在网上查了所有的信息,有人说源代码中有换行符/空格的问题,我看了所有的源代码,没有任何问题。
当时我绝望地删除了Redirect::route('home'),并将其替换为View::make('home')。这阻止了消息的显示,我可以像往常一样登录了。
所以我有两个问题:1)是什么导致了这个奇怪的问题?2)在这种情况下使用View::make()与Redirect::route()有什么问题吗?
谢谢!

sqougxex

sqougxex1#

我面临着同样的问题,在花了整个周末找到实际原因并解决这个问题后,我落在这个stackoverflow问题上,感觉它和我的问题一样。
我使用了下面的核心php函数来重定向,而不是从控制器返回一个视图文件。

header('Location: /');

它打印了实际的文件,其中有空行。删除此行修复了我的问题。
有成千上万的文件在我的代码库.我的假设是,我已经尝试了不同的脚本,以找到这样的空行在任何文件的开始,并没有这样的文件,根据这些脚本的结果.我假设有没有在我的任何文件空行.但头('位置:/')证明了我的假设是不正确的,我在错误的线路上工作。

mjqavswn

mjqavswn2#

我遇到了同样的问题,对我来说,问题是我在<?php标记之前的基本控制器中有一个空格

tp5buhyn

tp5buhyn3#

虽然没有看到更多的设置,这将是棘手的调试,你确实有一个错误,在你的路线。

Route::get('/', array('as'=>'home', 'use'=>'HomeController@show'));

应为:

Route::get('/', array('as'=>'home', 'uses'=>'HomeController@show'));

注意“uses”与“use”相对。
另外,使用View::make也没什么错,但这可能不是最好的逻辑,因为用户将显示与URL不匹配的内容。最好的做法是像你现在这样重定向他们.....只要确保路由在那里,一旦重定向,他们就可以点击。

bq3bfh9z

bq3bfh9z4#

在我的应用程序中,问题是由转换为字符串引起的:

public function myAction(): string {
   return redirect('/');
}

我必须删除: string以防止响应被转换为字符串。

ulmd4ohb

ulmd4ohb5#

我在一个小组项目中工作。当在生产中部署时开始出现此错误。经过很长时间的寻找问题,我发现它是从协作者插入的模型(用户)返回的“echo”。当删除此问题时,应用程序在重定向中恢复正常

euoag5mw

euoag5mw6#

在我的例子中,是中间件中setStatusCode=201的调用导致了这种情况,我相信这会影响重定向的标准状态代码302

相关问题