今天继续研究laravel,在路由里注册了一个控制器路由Route::controller()。
先get请求一个页面
class UserController extends Controller{ public function getIndex(){ echo view('index'); }}
OK,没有问题,请求成功。
继续。
post请求,
public function postLogin(){ }
失败!!!!
很奇怪,按照文档应该是这样写method+name 的形式。很蛋疼,仔细检查是不是请求名称错误,没有错。
百度一下,额~,貌似没有,应该不是什么问题,可能是我写的不对,回头继续去看laravel的文档。
原来是post请求laravel会启动CSRF保护
以下是laravel文档里的的说法:
Laravel 提供简易的方法,让您可以保护您的应用程序不受到 CSRF (跨网站请求伪造)攻击。跨网站请求伪造是一种恶意的攻击,借以代表经过身份验证的用户执行未经授权的命令。
Laravel 会自动在每一位用户的 session 中放置随机的 token ,这个 token 将被用来确保经过验证的用户是实际发出请求至应用程序的用户:
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
当然也可以在 Blade 模板引擎使用:
<input type="hidden" name="_token" value="{{ csrf_token() }}">