需求:
用户登录图片验证码,没法判断当前验证码属于哪个用户的,无法做失效。
发现:
laravel 自带的 csrf_token 可用,就是这个:
<!-- CSRF Token --> <meta name="csrf-token" content="N4gtQWTTr4dKUmtR4YQfE2XLZYOZkeZgPHXCrISS">
使用问题:
csrf_token 是laravel session 写入的数据。但是当我使用:$request->session()->token(); 或是 $token = csrf_token(); 一直报错如下:Session store not set on request
调查可知此次请求session并未启动,查看 app/Http/Kernel.php 可知除了web中间件(\Illuminate\Session\Middleware\StartSession::class 有了这个中间件才会启动session!),其他请求包括 $routeMiddleware 并不会启动session。
最终解决:
app/Http/Kernel.php $routeMiddleware 中注册 \Illuminate\Session\Middleware\StartSession::class session启动,要用到的API放入这个中间键中。