关于Laravel CSRF 的问题求助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Laravel CSRF 的问题求助相关的知识,希望对你有一定的参考价值。

参考技术A 简单描述:

提交的表单中已经加入了 _token字段
开机-》打开浏览器-》进入网站,此时默认已登录,记住了上次的登录
然后提交了个form 就出现了 token miss match 的异常
public function handle($request, Closure $next)

if ($this->isReading($request) || $this->tokensMatch($request))

return $this->addCookieToResponse($request, $next($request));


throw new TokenMismatchException;

抛出异常的位置,最后的那个throw,进一步跟入$this->tokensMatch方法发现

return StringUtils::eq www.hbbz08.com uals($request->session()->token(), $token);
这个反回false,也就是我每次产生的token和session中得token会不一致。

这里就不理解了,如果我浏览器一直开着,session不过期,那么每次提交又都会生成新的token,是不是每次都会验证失败?

想到这个地方有点乱了,是不是哪个地方进入误区了? 向大家求助....

update:

前面理解错了一个地方,csrf()那个函数原来就是从session中取的token,当成是每次随机生成了.这样的话可能不知道什么原因导致token变了。
参考技术B 这个是csrf token过期了
看我博客有刷新的例子
http://blog.liusida.cn/content/6

关于laravel一些学习小知识

laravel小知识:

第一:打印出最近执行的sql语句

这里先开启query日志 

DB::connection()->enableQueryLog();
之后赋值打印就可以了
$log = DB::getQueryLog();
dd($log); //打印sql语句

 

这样就可以了 


第二:关于Csrf防跨域问题的使用
ajax表单传输的时候
头部

 

请求部分

使用就是这样,这样就可以防止跨域访问  关于CSRF的值存在本地的session里面

 


以上是关于关于Laravel CSRF 的问题求助的主要内容,如果未能解决你的问题,请参考以下文章

Larave中CSRF攻击

为 laravel SPA 生成动态 csrf-token

使用Larave5.6l提交POST请求出现The page has expired due to inactivity错误

我想自学laraver,请诸位前辈给一些建议,谢谢

React js - Laravel 5:在 POST 方法中使用 csrf-token

larave学习笔记1-安装配置