Laravel学习笔记(二)---路由,CSRF,HTTP中间件,RESTFul风格控制器注册路由,视图间共享数据

来源:互联网 发布:淘宝运营证书 编辑:程序博客网 时间:2024/05/18 01:09
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'));
});

0 0
原创粉丝点击