laravel Redirect::intended()重定向到完整的URL


laravel Redirect::intended() redirects to the full URL

我为Laravel 4使用了一个自定义的Auth驱动程序,该驱动程序需要重定向回触发身份验证过程的任何页面。驱动程序将用户从一个完全不同的域上的单一登录服务中删除,然后在他们的服务将用户登录后再次返回。所有这些都很好,直到用户第一次从SSO服务器返回。我使用return Redirect::intended();语句来返回用户需要的位置,但不是访问http://www.some.dev/secret并重定向到相同的位置,而是将用户重定向到http://www.some.dev/http://www.some.dev/secret,这自然不会正常工作。我了解了Laravel如何存储REQUEST_URI会话变量,它似乎提取了完整的URL。不确定其他人是如何不会被错误重定向的,但我很好奇是否有人遇到过这种情况,如果有,你是如何修复的,无论是错误的配置文件还是调整了框架。

eta:在404堆栈跟踪中,Laravel表示REQUEST_URI值设置为/http://www.some.dev/secret。因此,这似乎不是一个.htaccess傻瓜。

eta2:通过两种方式测试我的路线:

Route::get('secret', array('before' => 'auth', 'uses' => 'ExampleController@phpinfo'));

Route::get('/secret', array('before' => 'auth', 'uses' => 'ExampleController@phpinfo'));

没有区别。

eta3:我只是要继续添加一些东西。因此,这种行为只在我从Eloquent(但不是SSO)注销时发生,即使是在我第一次访问页面时也会发生。所以,让我们说第一次,我没有登录SSO或Eloquent。我通过SSO登录,然后通过Eloquent在内部登录。我弄错了REQUEST_URI。我回到地址栏,去掉http://www.some.dev/后面的内容,然后键入secret(直接浏览到http://www.some.dev/secret)。我能毫不费力地到达页面。在我的页面上有一个注销链接,可以清除Eloquent凭据。我还在页面底部呼应了$_SERVER['REQUEST_URI'],我看到它是/secret。我单击注销按钮,它清除Eloquent凭据,但保持SSO凭据有效。我浏览回/secret,看到了同样的无意义的REQUEST_URI。清除,再次输入secret,我就没事了。所以,当我用Auth::login重新验证我的Eloquent凭据时,它似乎把我的REQUEST_URI搞砸了。这可能是因为我从另一个域中弹出凭据,所以框架必须将相对URL转换为静态URL吗?

我怀疑您首先传递给SSO服务器的重定向BackTo URL是不正确的。