我在文档中看到,对于安全路由 Laravel 仅在secure_url
提供函数url
并且它提供了重定向方法
redirect()->secure('/path');
现在,对于切换协议我们需要更改代码似乎非常混乱。最糟糕的是,我们可能需要在laravel中更改预先构建的 Auth 控制器。
我的问题是,是否有更好的方法可以从配置切换到 https 。如果不可能比为什么?如果需要,我们可以分叉laravel并添加此功能。
答案 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 */
});