仅将ssl应用于站点的管理路由

时间:2016-01-13 12:56:40

标签: php laravel ssl https

我有一个用PHP Laravel 5.1制作的网站,带有PingPong管理包,用于本网站的管理CMS。

路线如下:

  公共网站的

mywebsite»

     

mywebsite / admin» for admin CMS

我的客户只想在mywebsite / admin路由中添加SSL协议。 有可能吗? 如果是,我是否需要为此添加一些额外的代码?

1 个答案:

答案 0 :(得分:2)

您可以创建一个中间件,当URL不安全时(通过HTTPS)重定向。然后在要强制执行SSL的路由上启用该中间件:

<?php // app/Http/Middleware/Secure.php

namespace App\Http\Middleware;

use Closure;

class Secure
{
    public function handle($request, Closure $next)
    {
        if (!$request->isSecure()) {
            return redirect()->secure($request->getRequestUri());
        }

        return $next($request);
    }
}

app/Http/Kernel.php中添加中间件:

protected $routeMiddleware = [
    'secure' => \App\Http\Middleware\Secure::class
];

并在管理路由上启用中间件,例如使用路由组:

Route::group(['middleware' => 'secure', 'prefix' => 'admin'], function () {
    // here your routes (without 'admin/' prefix)
});

现在,当有人通过普通HTTP转到管理员URL时,他将被重定向到该路由的HTTPS版本。

当然,您需要以适当的方式设置证书,以便HTTP和HTTPS都可以访问该站点。