Laravel通过配置安全路由处理

时间:2016-09-14 07:54:24

标签: php laravel routes laravel-5.3

我在文档中看到,对于安全路由 Laravel 仅在secure_url提供函数url并且它提供了重定向方法

redirect()->secure('/path');

现在,对于切换协议我们需要更改代码似乎非常混乱。最糟糕的是,我们可能需要在laravel中更改预先构建的 Auth 控制器。

我的问题是,是否有更好的方法可以从配置切换到 https 。如果不可能比为什么?如果需要,我们可以分叉laravel并添加此功能。

1 个答案:

答案 0 :(得分:2)

我用于此的解决方案是创建一个安全的中间件。它会检查请求是否安全。如果没有将其重定向到安全的那个。

首先在中间件目录中创建一个中间件

    <?php namespace App\Http\Middleware;

    use Closure;

    class SecureMiddleware {

        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle($request, Closure $next)
        {
             if (!$request->secure()) {
                    return redirect()->secure($request->getRequestUri());
                }
            return $next($request);
        }

    }

在Kernel.php文件中注册

protected $routeMiddleware = [
        'auth'          => 'App\Http\Middleware\Authenticate',
        'auth.basic'    => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
        'guest'         => 'App\Http\Middleware\RedirectIfAuthenticated',
        'securage'      => 'App\Http\Middleware\SecureMiddleware',
    ];

然后使用路由组指定您希望安全路由的位置。

Route::group(['middleware' => 'securage'], function() {
/* Routes here */
});