Laravel学习笔记(二)---路由,CSRF,HTTP中间件,RESTFul风格控制器注册路由,视图间共享数据
2017-04-01 08:58
661 查看
3,定义路由必选参数设置
Route::get('/hello/{name}',function($name){
return "Hello {$name}!";
});
定义路由可选参数设置
Route::get('/hello/{name?}',function($name="abc"){
return "Hello {$name}!";
});
有时候我们希望对路由有更加灵活的条件约束,可以通过正则表达式来实现:
Route::get('/hello/{name?}',function($name="Laravel"){
return "Hello {$name}!";
})->where('name','[A-Za-z]+');
CSRF是跨站请求伪造(Cross-site request forgery)的英文缩写。关于CSRF攻击原理及其防护
Laravel框架中避免CSRF攻击很简单:Laravel自动为每个用户Session生成了一个CSRF Token,该Token可用于验证登录用户和发起请求者是否是同一人,如果不是则请求失败。
Laravel提供了一个全局帮助函数csrf_token来获取该Token值,因此只需在视提交图表单中添加如下HTML代码即可在请求中带上Token:
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
该段代码等同于全局帮助函数csrf_field的输出:
<?php echo csrf_field(); ?>
在Blade模板引擎中还可以使用如下方式调用:
{!! csrf_field() !!}
Laravel中可以把HTTP中间件看做“装饰器”,在请求到达最终动作之前对请求进行过滤和处理。
中间件在Laravel中有着广泛的应用,比如用户认证、日志、维护模式、开启Session、从Session中获取错误信息,以及上一篇教程中提到的CSRF验证,等等。
中间件类默认存放在app/Http/Middleware目录下。
此外,定义好中间件后,需要在app/Http/Kernel.php文件中注册该中间件,如果我们定义的中间件想要在全局有效,
即每次请求都会调用,则将该中间件追加到$middleware属性数组;否则如果中间件只是在某些特定的路由中使用,则将其追加到$routeMiddleware属性数组,并在路由定义时使用middleware选项指定。
为RESTFul风格控制器注册路由
方法 路径 动作 路由名称
GET /post index post.index
GET /post/create create post.create
POST /post store post.store
GET /post/{post} show post.show
GET /post/{post}/edit edit post.edit
PUT/PATCH /post/{post} update post.update
DELETE /post/{post} destroy post.destroy
视图间共享数据
view()->share('sitename','Laravel学院');
你也可以传递数据到多个视图:
view()->composer(['hello','home'],function($view){
$view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
});
甚至所有视图(使用通配符*):
view()->composer('*',function($view){
$view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
});
Route::get('/hello/{name}',function($name){
return "Hello {$name}!";
});
定义路由可选参数设置
Route::get('/hello/{name?}',function($name="abc"){
return "Hello {$name}!";
});
有时候我们希望对路由有更加灵活的条件约束,可以通过正则表达式来实现:
Route::get('/hello/{name?}',function($name="Laravel"){
return "Hello {$name}!";
})->where('name','[A-Za-z]+');
CSRF是跨站请求伪造(Cross-site request forgery)的英文缩写。关于CSRF攻击原理及其防护
Laravel框架中避免CSRF攻击很简单:Laravel自动为每个用户Session生成了一个CSRF Token,该Token可用于验证登录用户和发起请求者是否是同一人,如果不是则请求失败。
Laravel提供了一个全局帮助函数csrf_token来获取该Token值,因此只需在视提交图表单中添加如下HTML代码即可在请求中带上Token:
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
该段代码等同于全局帮助函数csrf_field的输出:
<?php echo csrf_field(); ?>
在Blade模板引擎中还可以使用如下方式调用:
{!! csrf_field() !!}
Laravel中可以把HTTP中间件看做“装饰器”,在请求到达最终动作之前对请求进行过滤和处理。
中间件在Laravel中有着广泛的应用,比如用户认证、日志、维护模式、开启Session、从Session中获取错误信息,以及上一篇教程中提到的CSRF验证,等等。
中间件类默认存放在app/Http/Middleware目录下。
此外,定义好中间件后,需要在app/Http/Kernel.php文件中注册该中间件,如果我们定义的中间件想要在全局有效,
即每次请求都会调用,则将该中间件追加到$middleware属性数组;否则如果中间件只是在某些特定的路由中使用,则将其追加到$routeMiddleware属性数组,并在路由定义时使用middleware选项指定。
为RESTFul风格控制器注册路由
方法 路径 动作 路由名称
GET /post index post.index
GET /post/create create post.create
POST /post store post.store
GET /post/{post} show post.show
GET /post/{post}/edit edit post.edit
PUT/PATCH /post/{post} update post.update
DELETE /post/{post} destroy post.destroy
视图间共享数据
view()->share('sitename','Laravel学院');
你也可以传递数据到多个视图:
view()->composer(['hello','home'],function($view){
$view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
});
甚至所有视图(使用通配符*):
view()->composer('*',function($view){
$view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
});
相关文章推荐
- ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习
- laravel中常用的命令(路由列表、建立模型、建立数据迁移文件、注册中间件、 清除缓存)
- laravel 学习笔记——路由(路由与控制器、资源路由)
- Laravel 5框架学习之路由、控制器和视图简介
- ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习
- laravel 学习笔记——路由(中间件与路由组)
- Laravel5.1学习笔记3 HTTP中间件
- laravel 学习笔记——路由(路由与控制器)
- Laravel学习:路由、视图、控制器工作流程(2)
- ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习
- Laravel 学习笔记——路由(路由与控制器)
- laravel路由、中间件、控制器等简单笔记
- laravel 学习笔记——路由(路由与控制器)
- SpringMVC 学习笔记5 - 文件上传 & json数据交互 & RESTful风格
- Laravel思维导图之Laravel HTTP 路由、中间件、控制器
- ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习
- ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习
- Laravel 学习笔记——路由(中间件与路由组)
- [转]ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习
- laravel 学习笔记——路由(中间件与路由组)