0%

前言

The access token of FB App

拿原本只有一小時時效的 token 去換長時間(60天)的 token

Read more »

安裝套件

Composer require guzzlehttp/guzzle

使用方法

use GuzzleHttp\Client;
$client = new Client();

GET

$response_origin = $client->request('GET', url);

POST

1
2
3
4
5
$response_origin = $client->request('POST', url, 
['form_params' => [
"userID"=>$request->user_id,
"key"=>$request->key]
]);

$response = json_decode($response_origin->getBody())
$data = $response->data

前言

執行最簡單的 Hello world 範本測試 Actions 的使用

Read more »

前言

讓遠端伺服器( ex: GCE)在本機修改 push 上 github 後,可以自動 git pull 更新。

Read more »

前言

簡介目前用過的參數和常見 QA

Read more »

git clone new repo

git clone https://github.com/theme-next/hexo-theme-next themes/next-reloaded

npm uninstall hexo-generator-searchdb --save
npm install hexo-generator-search --save

物件導向

在 OOP 的設計模式中,類別和介面扮演重要角色,讓我們可以遵守不重複原則(DRY)。
類別如同房屋的藍圖,所有物件都是照著類別建構的實際的房子。
物件透過 $this 關鍵字來參考自己。

Read more »

tags: Laravel6

Step 1 定義 guard

  • 在 AuthServiceProvider 的 boot() 中 定義客製的 guard
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use Illuminate\Support\Facades\Auth;

public function boot()
{
$this->registerPolicies();

Auth::viaRequest('custom-token', function ($request) {

if (!$request->remember_token) {
return null;
}else {
$user =User::where('remember_token', $request->remember_token)->first();
if ($user) {
Auth::login($user);
return $user;
}
return null;
}
});
}

如果 token 是對的,即有通過 if($user), 要記得Auth::login($user); 這樣之後使用 Auth::user(); 才會有值

Step 2 更改 config/auth.php

  • 將 guards 陣列中 api 的 driver 改為自訂的’custom-token’
1
2
3
4
5
6
7
'guards' => [
'api' => [
'driver' => 'custom-token',
'provider' => 'users',
'hash' => true,
],
],

Step 3 自製身份認證 Middleware

  • 在 Middleware 的 handle function 中 使用 Auth::guard()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public function handle($request, Closure $next, $role)
{
try {

if (Auth::guard('api')->user()) {
$request->merge(['user' => Auth::user()]);

}else {
try {

$credentials = $request->only('name', 'password');
if (Auth::attempt($credentials,true)) {
$request->merge(['user' => Auth::user()]);
return $next($request);
}else {
return response()->json(['result'=>'The token is unavailable. Please login again.']);
}

} catch (\Throwable $th) {
return "attempt error";
}
}

}