![](/img/trans.png)
[英]Laravel 4, Token mismatch exception in filters.php using CSRF
[英]Unable to migrate the filters.php file from laravel 4 to laravel 5
我只是继承了一个laravel应用程序,需要将其从4迁移到5。遵循了该指南之后,一切都很好,除了filters.php文件。
该指南说将它们移动到RouteServiceProvider
的启动方法,并在使用middleware
过滤器之前进行替换,但这是行不通的。 我是Laravel的新手,不确定一切如何运作。
这是我要迁移的过滤器之一:
Route::filter('campaign.edit', function($route)
{
$campaign_id = $route->getParameter('id');
if (is_null(Namespace\Campaign::find($campaign_id))) {
if (Input::get('campaign_id')) {
$campaign_id = Input::get('campaign_id');
} else if (Input::get('track_id')) {
$track_id = Input::get('track_id');
$track = Namespace\Track::find($track_id);
$campaign_id = $track->campaign_id;
} else {
return;
}
}
if (false === Auth::user()->canEditCampaign($campaign_id)) {
return App::abort(403);
}
});
我该如何进行迁移?
通过使用该功能并制作中间件(例如下面的中间件)来找到解决方案。
namespace App\Http\Middleware;
use Closure;
use NameSpace;
use Input;
use Illuminate\Support\Facades\Auth;
class CampaignEdit
{
public function handle($request, Closure $next)
{
$campaign_id = $request->route('id');
if (is_null(NameSpace\Campaign::find($campaign_id))) {
if (Input::get('campaign_id')) {
$campaign_id = Input::get('campaign_id');
} else if (Input::get('track_id')) {
$track_id = Input::get('track_id');
$track = NameSpace\Track::find($track_id);
$campaign_id = $track->campaign_id;
} else {
return;
}
}
if (false === Auth::user()->canEditCampaign($campaign_id)) {
return App::abort(403);
}
return $next($request);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.