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

earnpls • 331 次浏览 • 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>即可


原创文章,转载请注明 :laravel5.* 关闭指定路由的CsrfToken与常见csrf错误分析 - Laravel学习网
原文出处: https://phpartisan.cn/news/84.html
问题交流群 :168117787
提交评论
要回复文章请先登录注册
用户评论
  • 没有评论
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 [ laravel-mongodb教程 ] laravel使用MongoDB过程中常见错误与解决办法