laravel5.* 关闭指定路由的CsrfToken与常见csrf错误分析

Song2390 次浏览0个评论2018年03月10日

有时候你可能会希望一组URIs和路由不要被CSRF保护。例如:你开发Api接口让别人调用,你需要从LaravelCSRF保护中排除webhook的处理路由。可以在app\Http\Middleware\VerifyCsrfToken.php中间件中增加$except属性来排除URIs(5.3以后可定义在API中,也没有csrf`):

<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        '/test_csrf',
    ];
}

这里我们需要关闭一个/test_csrf的路由,这样csrf就不需要{!! csrf_field() !!}

常见错误与解决办法

1、Illuminate\Session\TokenMismatchException in /var/www/test/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:70

这个问题表示你的csrf验证失败,你可以关闭路由的csrf,或者在表单中添加{!! csrf_field() !!}或者<input name="_token" value="{{ csrf_token() }}"></input>即可

更多相关好文

    当前暂无更多相关好文推荐...