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
67.5k87999
67.5k87999
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
67.5k87999
67.5k87999
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 |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
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