Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

firebase storage rules の注意点 (削除時)

Last updated at Posted at 2018-06-04

(※2018/10/9 delete は用意されている旨ご指摘頂きました。そのためこの記事は参考にならないかと思います。)

firebase storage のセキュリティルールでハマったので書いておきます。

firebase storage の rule は firestore と違いオペレーションが read write のみで create update delete 等は用意されていません。そのため、注意しなくてはいけないケースがあります。

例えば、画像の書き込みを 500KB 以下に制限したい場合、次のように書くと思います。

match /abc/{abcID}/image/{image} {
  allow read: if request.auth != null;
  allow write: if (request.auth != null &&
               request.resource.size < 500 * 1024 &&
               request.resource.contentType.matches('image/.*'));
}

一見良さそうですが、このままだと削除ができなくなります。理由は削除時 request.resource.size の値が null になるためです。そのため削除させたい場合、次のように書きます。

match /abc/{abcID}/image/{image} {
  allow read: if request.auth != null;
  allow write: if (request.auth != null && request.resource == null)
               || (request.auth != null &&
               request.resource.size < 500 * 1024 &&
               request.resource.contentType.matches('image/.*'));
}

下記の条件を追加している点がポイントです。

request.resource == null

これで削除もできるようになります。

参考
https://stackoverflow.com/questions/38922124/firebase-storage-post-rules-apply-to-delete-rules

ドキュメントに明示的には書いてないような気がします。

8
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Qiita Advent Calendar is held!

Qiita Advent Calendar is an article posting event where you post articles by filling a calendar 🎅

Some calendars come with gifts and some gifts are drawn from all calendars 👀

Please tie the article to your calendar and let's enjoy Christmas together!

8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?