首先,表单里面直接的这个{$Request.token},是token的value值,每一次刷新页面,会有一个新的token生产
<form method="post" action="{:url('Login/do_login')}">
<h4 class="no-margins">登录:</h4>
<p class="m-t-md">登录到后台主页</p>
<input name="username" type="text" class="form-control uname" placeholder="用户名" />
<input name="passwords" type="password" class="form-control pword m-b" placeholder="密码" />
<input type="hidden" name="__token__" value="{$Request.token}">
<a href="javascript:;">忘记密码了?</a>
<button onclick="" class="btn btn-success btn-block">登录</button>
</form>
第二,我们可以获取表单的token值,和session中的token,进行对比是否一样
$token=request()->param("__token__");//这是表单提交获取的token
var_dump(request()->session());//直接打印session中的token
第三:validate验证器中的token名称一定要为__token__才行,如果你这里写错了,就会验证失败
protected $rule=[
'admin_name'=>'require|length:5,20',
'admin_pwds'=>'require|length:6,15',
'__token__'=>'require|token', //这里__token__不能去改.
];
我们打印传参过来的值,以及session获取的token,还有验证后的结果,验证成功为true
如果对比失败,请检查你的data中的token名称是否为__token__,以及验证器是否正确写对了,还有就是你的表单是否重复提交了,重复提交失败是因为你的session中的token变了而你获取的token还是上一次的token,要去表单页面重新刷新一次再进行提交.