標籤

BAT (38) shell (34) Virtual Machine (33) Xubuntu (29) acfs (25) PHP (24) CentOS (21) Virtul Box (20) 編輯器 (17) 資料庫 (15) lubuntu (13) windows (13) CPP (12) ubuntu (12) chrome (11) laravel (10) Docker (9) Python (9) 5A88 (7) VMware (6) 資料結構 (6) Javascript (5) Node (5) Proxmox VE (5) 公告系統 (5) 程式積木 (5) Android Studio (4) ANN (3) OB2D2016x64 (3) Xoops (3) clonezilla (3) samba (3) 公文 (3) 其他 (3) 硬體 (3) API (2) Android (2) AppInvent2 (2) Html (2) Hyper-V (2) Nas (2) botnet (2) mbot (2) swift (2) wordpress (2) 樣板 (2) 防火牆 (2) AD的應用 (1) Ansible (1) Arduino (1) CSS (1) GitLab (1) HA Proxy (1) LegoEV3 (1) PowerShell (1) Scratch (1) VM (1) XenServer (1) kotlin (1) linuxmint (1) lxc (1)

2016年11月30日 星期三

laravel 5.3 routes 使用方法

在laravel 5.3   routes/web.php 定義 web相關的 routes,routes/api.php 定義 api相關的 routes。
寫在 routes/web.php
Route::get('foo', function () {
    return 'welcome';
});
Route::get('test', function () {
    return view('test');
});
與在 resources/views/test.blade.php 
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>TEST</title>
  </head>
  <body>
    <a href="#">TEST</a>
  </body>
</html>

通常情況下,您將會需要為您的路由產生 URL,您可以使用 url 輔助函數來操作:
$url = url('foo');
此時將上述所學,整理如下:
並有下列的結果

接收必要參數
Route::get('posts/{id}', function ($id) {
    return 'Post:'.$id;
});
接收選擇性參數
Route::get('users/{name?}', function ($name = 'John') {
    return 'My name is '.$name;
});
限制參數格式
   1.使用 where 限制
    Route::get('posts/{id}', function ($id) {
    return 'Post:'.$id;
    })->where('id','[0-9]+');
    
   2.使用 pattern 限制
    Route::pattern('id','[0-9]+');
    Route::get('posts/{id}', function ($id) {
    return 'Post:'.$id;
    })->where('id','[0-9]+');
 
    打上 192.168.81.210/posts/John 則會出現錯誤訊息

列出目前所有的orute 規則
$ php artisn route:list
Route Prefixing
設定某些Route前都有共同的前置uri
Route::group(['prefix'=>'admin'],function(){
    Route::get('users',function(){
      return 'abc';
    });
});
Sub-Domain Routing
限制Route只能在某個Sub-Domain 才接受
Route::group(['domin'=>'192.168.81.210'],function(){
        Route::get('{user}/{id}',function($user,$id){
           return $user.'  '.$id;
        });
});
今天依照網站架構圖,做一下練習
在這個階段的實作裡,直接在Route裡回傳字串,以確認把通道打開。
裡面的程式碼為
Route::get('/',['as'=>'home.index',function(){
  return 'home.index';
}]);
Route::get('about/',['as'=>'about.index',function(){
  return 'about.index';
}]);

Route::post('posts/',['as'=>'posts.store',function(){
  return 'posts.store';
}]);

Route::get('posts/',['as'=>'posts.index',function(){
  return 'posts.index';
}]);

Route::get('posts/create',['as'=>'posts.create',function(){
  return 'posts.create';
}]);

Route::delete('posts/{id}',['as'=>'posts.destory',function($id){
  return $id.'.posts.destory';
}]);

Route::patch('posts/{id}',['as'=>'posts.update',function($id){
  return $id.'.posts.update';
}]);

Route::get('posts/{id}',['as'=>'posts.show',function($id){
  return 'posts.show';
}]);
Route::post('posts/{id}/comment/',['as'=>'posts.comment',function($id){
  return $id.'.posts.comment';
}]);
Route::get('posts/{id}/edt',['as'=>'posts.edit',function($id){
  return $id.'.posts.edit';
}]);
Route::get('hot/',['as'=>'hot.index',function(){
  return 'hot.index';
}]);
Route::get('random/',['as'=>'random.index',function(){
  return 'random.index';
}]);

CSRF 保護

Laravel 提供簡易的方法,讓您可以保護您的應用程式不受到 CSRF (跨網站請求偽造) 攻擊。跨網站請求偽造是一種惡意的攻擊,藉以代表經過身份驗證的使用者執行未經授權的命令。

Laravel 會自動在每一位使用者的 session 中放置隨機的 token ,這個 token 將被用來確保經過驗證的使用者是實際發出請求至應用程式的使用者:

插入 CSRF Token 到表單

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
當然也可以在 Blade 模板引擎使用:

<input type="hidden" name="_token" value="{{ csrf_token() }}">
您不需要手動驗證在 POST、PUT、DELETE 請求的 CSRF token。 VerifyCsrfToken HTTP 中介層將儲存在 session 中的請求輸入的 token 配對來驗證 token 。

除了尋找 CSRF token 作為「POST」參數,中介層也檢查 X-XSRF-TOKEN 請求標頭,這在多數 Javascript framework 常被拿來使用。


方法欺騙

HTML 表單沒有支援 PUT 或 DELETE 動作。所以當定義 PUT 或 DELETE 路由並在 HTML 表單中被呼叫的時候,您將需要添加隱藏 _method 欄位在表單中。

將數值同 _method 欄位發送使用 HTTP 請求方法。舉例來說:

<form action="/foo/bar" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
</form>


參考資料:
1.PHP Laravel 開發入門(四) – 路由(Routes)
http://www.codedata.com.tw/uncategorized/php-laravel-dev-tutorial-3-class-artisan/
2.Route 路由控制
http://www.slideshare.net/shengyou/6-route?ref=http://www.laravel-dojo.com/workshops/201507-ntpc
3.HTTP 路由
https://wastemobile.gitbooks.io/laravel-5-chinese-document/content/routing.html


沒有留言:

張貼留言

在 Windows 10 x64 1909版,使用BAT快速安裝公文系統與人事服務網(自然人憑證)版

相關內容移往 https://skjhcreator.blogspot.com/2021/02/windows-10-x64-1909bat.html