我在文档中看到,对于安全路由,Laravel仅在url上提供函数secure_url,并提供重定向方法。
redirect()->secure('/path');现在,对于切换协议,我们需要更改代码,这似乎非常混乱。最糟糕的是,我们可能需要更换预建的Auth控制器。
我的问题是,是否有更好的方法从配置切换到https。如果不可能的话,为什么?如果需要,我们可以叉开拉拉,并添加此功能。
发布于 2016-09-14 08:47:01
我使用的解决方案是创建一个安全的中间件。它检查请求是否安全。如果没有,则将其重定向到安全的。
首先,在中间件目录中创建一个中间件。
<?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 */
});https://stackoverflow.com/questions/39485226
复制相似问题