<?php
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'wechat', //路由的名称
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 = [
'stripe/',
];
}
/**
* Determine if the request has a URI that should pass through CSRF verification.
*
* @param \Illuminate\Http\Request $request
* @return bool
*/
protected function shouldPassThrough($request)
{
$excepted_csrf = \Config::get('params.excepted_csrf');
$all_except = array_merge($this->except, (array)$excepted_csrf);
foreach ($all_except as $except) {
if ($request->is(trim($except, '/'))) {
return true;
}
}
return false;
}
9 个回复
kingnet
赞同来自: it男那点事 、习惯把你宠坏 、Track
加个属性
skjun286 - 对WEB和服务器感兴趣的宅男
赞同来自: seed
看了一下, 比较粗暴直接的做法就是这样:
例如请求的网址是domain.com/uri1
\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php
该文件 查找 if ($this->isReading($request) || $this->tokensMatch($request))
修改为
if ($this->isReading($request) || $this->tokensMatch($request) || \Request::path() == 'uri1')
就可以了.
不过更好的做法其实应该是这样的, 就是麻烦一些..
http://www.camroncade.com/disa ... el-5/
motecshine - 菜鸟
赞同来自:
kernel
yt319921208
赞同来自:
小楼
赞同来自:
iat
赞同来自:
月夜守望
赞同来自:
有时候你可能会希望一组 URIs 不要被 CSRF 保护。例如,你如果使用 Stripe 处理付款,并且利用他们的 webhook 系统,你需要从 Laravel CSRF 保护中,排除 webhook 的处理路由。
你可以在 VerifyCsrfToken 中间件中增加 $except 属性来排除 URIs:
<?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 = [
'stripe/',
];
}
X-CSRF-TOKEN
cuihua - 生如灿烂之花
赞同来自:
链接是 http://wenda.golaravel.com/question/1093
这里只增加 protected $except属性是还不行的
在handle方法里面还要加一个判断,具体看上面链接。
而且上面 $except属性里面需要填写的不是路由器名称而是接受外部post的url
例如我的路由为下面的
Route::post('postTextMessage/wechat', ['as' => 'aaa', function()
{
//
// echo $name = Route::currentRouteName();
'WechatController@postTextMessage';
}]);
则
protected $except = [
'postTextMessage/wechat'
];
详细可以在VerifyCsrfToken里面输出一下$request就清晰了
wenhuijang - phper一枚
赞同来自: