You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
みなさん、こんにちは。 今回は前回、投稿したJWTの考察を踏まえて。 ユーザ認証(ログイン)後にJWTを発行するところまで実装をやってみます。 最近使っているfastapiを使用して実装します。 環境情報環境情報は以下の通りです。 # cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core) # python --version Python 3.8.5fastapiを動作させるためのpackageのインストールいつも通り仮想環境を作成して、開発します。 # python -m venv my_fastapi_env # ls my_fastapi_env # cd ~/<dev_dir>/my_fastapi # pip install --upgrade pip Collecting pip Downloading pip
FastAPIを使用し、Basic認証を実現するための方法を紹介します。 前回は最低限動作するFastAPI環境を作成したので、今回は認証機能編となります。 認証機能の実装から動作の確認まで行います。 環境構築編 ユーザ認証の実装データベースとの接続データベースを接続するためのライブラリを作成します。 接続先の情報はdocker-composeでMySQLに設定したものを使用します。 通常であれば設定ファイルや環境変数に接続先情報を外だしするべきですが、今回は簡略化のためリテラルで書き込みます。 src/app/lib/database.pyfrom sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessio
PythonのフレームワークであるFastAPIを触る機会があって、その中で非同期プログラミングの存在を知りました。 非同期プログラミングについて色々調べていくと、DB接続も非同期処理に対応してきていることが分かり、PythonのSQLライブラリで有名なSQLAlchemyもバージョン1.4から非同期処理に対応しているようです。 時代は非同期プログラミングみたいですね。 ただSQLAlchemyの非同期処理の記事がまだ少なく、同期処理から非同期処理に変えるときに、苦労しそうなので、今回はSQLAlchemy同期処理と非同期処理で設定やクエリがどう違うの比較しようと思います。 SQLAlchemyにはcoreとormがありますが、ここではormで書いていきます。 APIにはFastAPI、DBはPostgreSQLを使っていきます。 動作確認用コードは下記リポジトリに置いています。 同期処理
少し前にSQLAlchemy 1.4がリリースされました。 このSQLAlchemy 1.4には大きな特徴として次の2点があります。 SQLAlchemy ORMでこれまでの記法(1.x Style)に加えて、2.0 Styleと呼ばれる新しい記法に対応 CoreとORMの両方でイベントループを使った非同期処理に対応 今後のロードマップでは、SQLAlchemy 2.0では2.0 Styleのみがサポートされます。 また、イベントループを使った非同期処理もこの数年で一気に広まってきました。 SQLAlchemyが対応したこともこの流れをさらに加速させると思います。 そこで最近よく利用しているFastAPIと組み合わせて、SQLAlchemy 2.0 Styleを使った非同期Web APIのサンプルプロジェクトを用意しました。 コードはrhoboro/async-fastapi-sqlalc
OAuth2PasswordBearer auth/oauth2.pyを作成して、認証に必要な情報を記載します。 エンドポイントを認証によって保護する場合には、fastapi.securityのOAuth2PasswordBearerを用います。 python-multipartをインストールしていな方はpip install python-multipartをお願いします 認証機能のインスタンスを作成し、引数のtokenUrl='token'でトークン認証に用いるURLを指定しています。 ローカルの場合だと、127.0.0.1:8000/tokenをURLを指しています。こちらのエンドポイントは後程作成します。 エンドポイントに追加 作成出来たら任意のエンドポイントに認証機能を追加します。 from fastapi import APIRouter, Depends from sqlal
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く