我目前正在使用Laravel开发一个网络应用程序,直到最近该应用程序才能正常运行。我不知道触发它的是什么,但这里是我正在解决的问题的摘要:
登录用于工作,因为我有一个执行此操作的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())
来确保一旦用户登录,主页将提供不同的文本集。
最近,我注意到在提交登录请求后,有一个中间页面显示“重定向到http://localhost.com/
”的消息。在此之前,该消息不存在,并且错误随着此消息一起开始显示。
我查看了我可以在线获取的所有信息,有人建议源代码存在换行/空格问题。我查看了我的所有源代码,没有任何东西会暗示有什么问题。
当时绝望,我删除了Redirect :: route('home')并将其替换为View :: make('home')。这阻止了消息显示,我可以像往常一样登录。
所以我有两个问题: 1)导致这个奇怪问题的原因是什么? 2)在这种情况下使用View :: make()与Redirect :: route()有什么不对吗?
谢谢!
答案 0 :(得分:5)
我遇到了同样的问题,花了我整个周末才找到真正的原因并解决了这个问题。我登陆了这个stackoverflow问题,并感受到与我的问题相同的问题。
我使用以下核心php函数来重定向,而不是从控制器返回一个视图文件。
header('Location: /');
打印出有空行的实际文件。删除此行修复了我的问题。
我的代码库中有数千个文件。我的假设是我尝试了不同的脚本来在任何文件的开头找到这样的空白行,并且根据这些脚本结果没有这样的文件。我假设我的任何文件中都没有空白行。但标题('位置:/')证明我的假设不正确,而且我的工作线路错误。
答案 1 :(得分:2)
我遇到了同样的问题,对我来说问题是我在<?php
标签之前的基本控制器中有空格
答案 2 :(得分:1)
虽然没有看到更多的设置,但调试起来很棘手,你的路线中确实有错误....
Route::get('/', array('as'=>'home', 'use'=>'HomeController@show'));
应该是:
Route::get('/', array('as'=>'home', 'uses'=>'HomeController@show'));
注意&#39;使用&#39;而不是使用&#39;。
此外,使用View :: make没有任何问题,但它可能不是最好的逻辑,因为用户将显示的内容与网址不相符。最佳做法是按照您目前的方式重定向它们.....只需确保路由可以让他们在重定向时点击。
答案 3 :(得分:0)
在我的应用中,问题是由强制转换为字符串引起的:
public function myAction(): string {
return redirect('/');
}
我必须删除: string
以防止将响应强制转换为字符串。