Firebase Rules: How to block anonymous access?
up vote
2
down vote
favorite
Reading the Firebase Rules Documentation I couldn't find anything on how to block anonymous access to a specific collection or document.
In other words, I want to block users who are not logged in, and I also want to block users who are logged in as anonymous. I want to allow only users who are logged in as themselves (through email, Facebook, Google, SMS, etc).
How can I do that?
This is the code I came up with, which doesn't work:
service cloud.firestore {
match /databases/{database}/documents {
}
match /collectionExample/{documentExample} {
allow create: if request.auth.uid != null && request.auth.token.isAnonymous != false;
allow read: if request.auth.uid == resource.data.userId;
}
}
}
firebase google-cloud-firestore firebase-security-rules
add a comment |
up vote
2
down vote
favorite
Reading the Firebase Rules Documentation I couldn't find anything on how to block anonymous access to a specific collection or document.
In other words, I want to block users who are not logged in, and I also want to block users who are logged in as anonymous. I want to allow only users who are logged in as themselves (through email, Facebook, Google, SMS, etc).
How can I do that?
This is the code I came up with, which doesn't work:
service cloud.firestore {
match /databases/{database}/documents {
}
match /collectionExample/{documentExample} {
allow create: if request.auth.uid != null && request.auth.token.isAnonymous != false;
allow read: if request.auth.uid == resource.data.userId;
}
}
}
firebase google-cloud-firestore firebase-security-rules
add a comment |
up vote
2
down vote
favorite
up vote
2
down vote
favorite
Reading the Firebase Rules Documentation I couldn't find anything on how to block anonymous access to a specific collection or document.
In other words, I want to block users who are not logged in, and I also want to block users who are logged in as anonymous. I want to allow only users who are logged in as themselves (through email, Facebook, Google, SMS, etc).
How can I do that?
This is the code I came up with, which doesn't work:
service cloud.firestore {
match /databases/{database}/documents {
}
match /collectionExample/{documentExample} {
allow create: if request.auth.uid != null && request.auth.token.isAnonymous != false;
allow read: if request.auth.uid == resource.data.userId;
}
}
}
firebase google-cloud-firestore firebase-security-rules
Reading the Firebase Rules Documentation I couldn't find anything on how to block anonymous access to a specific collection or document.
In other words, I want to block users who are not logged in, and I also want to block users who are logged in as anonymous. I want to allow only users who are logged in as themselves (through email, Facebook, Google, SMS, etc).
How can I do that?
This is the code I came up with, which doesn't work:
service cloud.firestore {
match /databases/{database}/documents {
}
match /collectionExample/{documentExample} {
allow create: if request.auth.uid != null && request.auth.token.isAnonymous != false;
allow read: if request.auth.uid == resource.data.userId;
}
}
}
firebase google-cloud-firestore firebase-security-rules
firebase google-cloud-firestore firebase-security-rules
edited Nov 21 at 20:17
Doug Stevenson
65.6k77997
65.6k77997
asked Nov 21 at 19:46
BlueEffect
937
937
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
2
down vote
accepted
I haven't tried this, but I suspect you can use request.auth.token.firebase.sign_in_provider
(see the docs for auth
). It's supposed to contain the value anonymous
for anonymous auth. So, to allow document creates for non-anonymous logged in users:
allow create: if request.auth.uid != null && request.auth.token.firebase.sign_in_provider != 'anonymous';
Or, you could change it to only allow certain providers as well, given the other possible values for token firebase.sign_in_provider
in the docs.
I tested, usingrequest.auth.token.firebase.sign_in_provider != 'anonymous'
, that works, thanks
– BlueEffect
Nov 22 at 18:14
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
accepted
I haven't tried this, but I suspect you can use request.auth.token.firebase.sign_in_provider
(see the docs for auth
). It's supposed to contain the value anonymous
for anonymous auth. So, to allow document creates for non-anonymous logged in users:
allow create: if request.auth.uid != null && request.auth.token.firebase.sign_in_provider != 'anonymous';
Or, you could change it to only allow certain providers as well, given the other possible values for token firebase.sign_in_provider
in the docs.
I tested, usingrequest.auth.token.firebase.sign_in_provider != 'anonymous'
, that works, thanks
– BlueEffect
Nov 22 at 18:14
add a comment |
up vote
2
down vote
accepted
I haven't tried this, but I suspect you can use request.auth.token.firebase.sign_in_provider
(see the docs for auth
). It's supposed to contain the value anonymous
for anonymous auth. So, to allow document creates for non-anonymous logged in users:
allow create: if request.auth.uid != null && request.auth.token.firebase.sign_in_provider != 'anonymous';
Or, you could change it to only allow certain providers as well, given the other possible values for token firebase.sign_in_provider
in the docs.
I tested, usingrequest.auth.token.firebase.sign_in_provider != 'anonymous'
, that works, thanks
– BlueEffect
Nov 22 at 18:14
add a comment |
up vote
2
down vote
accepted
up vote
2
down vote
accepted
I haven't tried this, but I suspect you can use request.auth.token.firebase.sign_in_provider
(see the docs for auth
). It's supposed to contain the value anonymous
for anonymous auth. So, to allow document creates for non-anonymous logged in users:
allow create: if request.auth.uid != null && request.auth.token.firebase.sign_in_provider != 'anonymous';
Or, you could change it to only allow certain providers as well, given the other possible values for token firebase.sign_in_provider
in the docs.
I haven't tried this, but I suspect you can use request.auth.token.firebase.sign_in_provider
(see the docs for auth
). It's supposed to contain the value anonymous
for anonymous auth. So, to allow document creates for non-anonymous logged in users:
allow create: if request.auth.uid != null && request.auth.token.firebase.sign_in_provider != 'anonymous';
Or, you could change it to only allow certain providers as well, given the other possible values for token firebase.sign_in_provider
in the docs.
answered Nov 22 at 6:53
Doug Stevenson
65.6k77997
65.6k77997
I tested, usingrequest.auth.token.firebase.sign_in_provider != 'anonymous'
, that works, thanks
– BlueEffect
Nov 22 at 18:14
add a comment |
I tested, usingrequest.auth.token.firebase.sign_in_provider != 'anonymous'
, that works, thanks
– BlueEffect
Nov 22 at 18:14
I tested, using
request.auth.token.firebase.sign_in_provider != 'anonymous'
, that works, thanks– BlueEffect
Nov 22 at 18:14
I tested, using
request.auth.token.firebase.sign_in_provider != 'anonymous'
, that works, thanks– BlueEffect
Nov 22 at 18:14
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53419498%2ffirebase-rules-how-to-block-anonymous-access%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown