2025-09-15 async-graphql の extension で認証を一箇所に集約する検証をした
bouzuya/rust-examples の async-graphql4 で crates:async-graphql の extension を guard の代わりに使用する方法を検証した。
#[graphql(guard = "...")]
の形で field などに認証などの処理を設定できるのだが、設定しそびれると処理が抜けてしまい、問題になる。そこで一律で認証などの処理を設定したくなった。
extension で実現できることは確認できた。
ただ、 async-graphql4 については、 user から roles を、 role から permissions を resolve の都度取得しており、ここでもし DB などから取得してしまうと性能上の問題が発生すると思う。
この問題についてはリクエストの冒頭で取得しておき、判定の処理のみを残す形にすれば解決できる。
async-graphql4 の実装は trait を使って抽象化するなど大げさなものも含むため、そのまま使うのではなく、参考にしながら、既存の実装に依存したものをアドホックに実装するで良いと思う。
おわり。
今日のコミット。
- rust-examples 1 commit