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

时间:2014-04-15 19:57:39

标签: php laravel

我正在为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吗?

1 个答案:

答案 0 :(得分:0)

我怀疑你首先传递给SSO服务器的redirectBackTo网址是不正确的。