Laravel框架中Request类的安全功能的扩展或覆盖功能,最佳动作?

时间:2013-09-15 21:59:44

标签: php laravel laravel-4

我目前正在使用Laravel 4并且正在徘徊我如何覆盖Request :: secure()方法,我正在编写一个将在负载均衡器后面的应用程序,因此我宁愿让函数返回true如果从负载均衡器应用的标头值。

理想情况下应如何做?我在这里阅读了这篇博文http://fideloper.com/extend-request-response-laravel,似乎有点过分了。

我不完全了解Laravel的Facades概念?是否有可能在我的答案中如何做到这一点?

1 个答案:

答案 0 :(得分:2)

正如fideloper所提到的那样,延伸Request课程与普通课程相比有所不同。但更简单:

1。创建扩展的Request类并确保它可以自动加载;

<强> ExtendedRequest.php

namespace Raphael\Extensions;

use Illuminate\Support\Facades\Response as IlluminateResponse;

class Response extends IlluminateResponse {
    public function isSecure() {
        return true;
    }
}

请注意,我们扩展了isSecure方法,而不是secure。这是因为secure只是从Symfony的基础isScure类调用Request

2. 确保Laravel使用您的扩展类。为此,请更改 start.php 文件;

<强>自举/ start.php

/*
|--------------------------------------------------------------------------
| Create The Application
|--------------------------------------------------------------------------
|
| The first thing we will do is create a new Laravel application instance
| which serves as the "glue" for all the components of Laravel, and is
| the IoC container for the system binding all of the various parts.
|
*/

use Illuminate\Foundation\Application;
Application::requestClass('Raphael\Extensions\Request');

$app = new Application;

$app->redirectIfTrailingSlash();

3。确保您在 app.php 配置文件中设置了正确的别名。

应用/配置/ app.php

'aliases' => array(
    // ...
    'Request' => 'Raphael\Extensions\Request',
    // ...
),