
python| まとめ | 現役エンジニア&プログラミングスクール講師「python」のまとめページです。pythonに関して抑えておきたい知識や文法やにについて記事をまとめています。まとめページの下部には「おすすめの学習書籍」「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中...
目次
目標
- QRコード以外ではアクセスできないようにする(困難にする)
- QRコードを作成してアクセスできるか確認する
QRコードに限定したアクセス
QRコードに限定したアクセス
これまで、作成してきた注文オーダーアプリは、ひとつのテーブルから複数人が同時にアクセスして注文をできることを想定しています。ただし、この時、利用するURLはテーブル番号が「2」ならhttp://PC名/orders/order/table/2、テーブル番号が「5」であればhttp://PC名/orders/order/table/5とシンプルなため、悪意のあるユーザーが手打ちで他人の会計情報を見れるといった怖さがあります。これに対処します。
feature-qrcode-securityブランチ
ここでは、QRコードを利用したセキュリティ対策を行うのでブランチの名前を「feature-qrcode-securityブランチ」とします。次のコマンドで「feature-qrcode-securityブランチ」を作成します。
git checkout -b feature-qrcode-security コマンド

QRコード作成アプリケーション
ここからFlaskアプリケーションでQRコードを生成するためのシステムを作成します。QRコード生成と利用には、QRコードを画像として出力する機能を持つqrcodeライブラリと画像処理を行えるPillowライブラリのインストールが必要です。次のコマンドでqrcodeライブラリとPillowライブラリを一緒にインストールします。
pip install qrcode[pil]
必要なファイルとディレクトリの準備
QRコードを生成するアプリケーションに利用するファイルを準備します。このアプリケーションで利用するディレクトリ名は「qrcodeapp」とします。
- apps/qrcodeapp/static/css/style.css
- apps/qrcodeapp/templates/qrcode_base.html
- apps/qrcodeapp/templates/qrcode_make.html
- apps/qrcodeapp/app.py
- apps/qrcodeapp/models.py

QRコードを生成するアプリケーション
モデル(TableAccessToken )
from sqlalchemy import DateTime
from apps.common.db import db
class TableAccessToken(db.Model):
id = db.Column(db.Integer, primary_key=True)
table_id = db.Column(db.Integer, db.ForeignKey("table.id"))
token = db.Column(db.String(64), unique=True, nullable=False)
expires_at = db.Column(DateTime(timezone=True))
abort_flag = db.Column(db.Boolean, default=False)
bill_id = db.Column(db.Integer, db.ForeignKey("bill.id"))
bill = db.relationship("Bill", backref="access_tokens")
トークンの発行
import secrets
from datetime import datetime, timedelta
def create_token_for_table(table_id, valid_days=7):
token = secrets.token_urlsafe(16)
expires_at = datetime.now(timezone.utc) + timedelta(days=valid_days)
new_token = TableAccessToken(
table_id=table_id, token=token, expires_at=expires_at, bill_id=None
)
db.session.add(new_token)
db.session.commit()
return token
トークンを利用したQRコードの発行

今回は以上になります。

「python」おすすめ書籍 ベスト3 | 現役エンジニア&プログラミングスクール講師「python」の学習でお勧めしたい書籍をご紹介しています。お勧めする理由としては、考え方、イメージなどを適切に捉えていること、「生のpython」に焦点をあてて解説をしている書籍であることなどが理由です。勿論、この他にも良い書籍はありますが、特に質の高かったものを選んで記事にしています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...

【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
Blueprint Flask Flask-SQLAlchemy Jinja2 MVT python session SQLite アップロード エンジニア セッション テンプレートエンジン バリデーション フレームワーク ルーティング 作成方法 初心者 利用方法 注意点 画像 統合
この続きはNoteとなります。