为每个tag生成永久的唯一key vendor/laravel/framework/src/Illuminate/Cache/TagSet.php::resetTag
获取tags唯一的命名空间 vendor/laravel/framework/src/Illuminate/Cache/TagSet.php::getNamespace
生成tags唯一命名空间下的某key vendor/laravel/framework/src/Illuminate/Cache/TaggedCache.php::taggedItemKey
框架解读
实例自动注入
|
|
FAQ
1.同步提交表单时,需要使用csrf_token()添加token信息,那么ajax传输时怎么办呢
答: 简述(以laravel5.1为例):
在全局csrf中间件的handle方法中,会自动向请求的cookie中添加token(名为XSRF-TOKEN),客户端向服务端发送异步请求时header中带上这个token,服务端自动比对csrf信息
注意: axios默认自动支持CSRF保护。具体表现是在发送请求时检测cookie中是否存在XSRF-TOKEN,有的话就自动添加到header中
顺便说一下laravel全局csrf检测的实现
(1)Laravel开启session时生成一个token并存到session中
|
|
(2)Laravel默认将注册csrf为全局中间件
|
|
(3)在csrf中间件执行方法handle中校验
先通过isReading判断请求方式,如果请求方式是READ|GET|OPTIONS其中一种,不做CSRF校验
再通过shouldPassThrouth判断当前请求uri在$excep属性数组中,如果不做校验
最后通过tokensMatch判断csrf token值是否与session中值相等,如果相等通过校验,不相等抛出异常
(请求中token获取顺序:_token > header中X-CSRF-TOKEN > header中X-XSRF-TOKEN)
|
|