https://github.com/umanari145/laravel_pgsql
https://github.com/umanari145/laravel_pgsql
authentication dependency-injection jwt laravel
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/umanari145/laravel_pgsql
- Owner: umanari145
- Created: 2020-02-19T11:20:43.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-05-08T02:00:38.000Z (about 3 years ago)
- Last Synced: 2025-02-12T15:19:15.080Z (over 1 year ago)
- Topics: authentication, dependency-injection, jwt, laravel
- Language: PHP
- Homepage:
- Size: 287 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
#laravel_pgsqlのサンプル
## postgres基礎
### ログイン
```
psql -U postgres(ユーザー) -d postgres(データベース)
\l DB一覧
\c DB名 DB選択(use DB)
\d テーブル一覧
\d table名 テーブル定義
\du MySQLでいうユーザー一覧
\x select文の結果を縦列で表示。(select文ごとにつけるのではなく、一度入れるとずっと継続。切る場合はもう一度¥x)
\q 終了
```
```
pg_dump -Ft -U データベース名 > データベース圧縮ファイル(tar.gz)
pg_restore -c - postgres -d postgres < データベース圧縮ファイル(tar.gz)
```
### 認証ロジックの作成
認証に関わる自動のルーティングやControllerを自動作成
```
php artisan make:auth
```
その後、下記コマンドでルーティングを確認できる。
```
php artisan route;list
```
#### token認証
usersにapi_tokenテーブル追加後
(uml/normaltoken.pu参照)
```
curl -H 'Accept: application/json' \
-H 'Authorization:Bearer 保存されたトークン' \
(URL)
http://localhost:8080/api/user?api_token=トークンの文字列
````
### DIに関する考察
参考URL
https://qiita.com/harunbu/items/079ea728d2c9cf4f44d5
https://www.geekfeed.co.jp/geekblog/laravel-service-providers
Laravel本体に実際にServiceを組み込むファイル
App\Providers\DiceServiceProvider.php
Providerの設定
App\config\app.php
実際に窓口になるinterface
App\RollableDice
実体となるClass(内部の記述)
App\Dice
App\LoadDice
## faker ダミーデータ作成
```
php artisan db:seed
```
## jwt認証に関して
https://blog.proglearn.com/2020/04/21/%E3%80%902020%E5%B9%B44%E6%9C%88-%E6%99%82%E7%82%B9%E3%80%91laravel%E3%81%A7jwt%E8%AA%8D%E8%A8%BC%EF%BC%81-jwt-auth-%E5%B0%8E%E5%85%A5%E6%89%8B%E9%A0%86/
https://qiita.com/aminevsky/items/9f45e0ffb5b14c3b5b50#jwt%E8%AA%8D%E8%A8%BC
```
#ライブラリインストール
composer require tymon/jwt-auth
#プロバイダ作成
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
#秘密鍵生成
php artisan jwt:secret
#.envに下記のような文字列が測れる
JWT_SECRET=XXXXXXXXXXXXXXXXXXX
#jwt認証用のコントローラー
JwtAuthController.php
uml/jwt.pu参照 *正確なプログラムは異なるが基本的な考え方は同一
#access_token取得
curl -X POST 'http://localhost:8080/api/auth/login' \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-d ' {
"email": "DBに入っているユーザーのemail",
"password": "testtest"
}'
#下記のようなレスポンスが帰って来ればOK
{"access_token":"XXXXXXXXXXXXXXXXXXX","token_type":"bearer","expires_in":3600}
#失敗時
{"error":"Unauthorized"}
#api_tokenをBearer XXXXの中に入れる
curl -X POST 'http://localhost:8080/api/auth/me' \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-H 'Authorization: Bearer XXXX'
#下記のようにユーザー情報が帰って来ればOK!
{
"id":1,
"name":"XXXXXXXX",
"email":"XXXXXXX",
"created_at":"2020-12-31 07:45:53",
"updated_at":"2020-12-31 07:45:53",
"api_token":null
}
#NGの場合、下記のようなメッセージが
{"message":"Unauthenticated."}
````