Firebase Rules: How to block anonymous access?
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 |
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 |
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 '18 at 20:17
Doug Stevenson
73.1k983104
73.1k983104
asked Nov 21 '18 at 19:46
BlueEffectBlueEffect
1358
1358
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
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 '18 at 18:14
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
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
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
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 '18 at 18:14
add a comment |
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 '18 at 18:14
add a comment |
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 '18 at 6:53
Doug StevensonDoug Stevenson
73.1k983104
73.1k983104
I tested, usingrequest.auth.token.firebase.sign_in_provider != 'anonymous'
, that works, thanks
– BlueEffect
Nov 22 '18 at 18:14
add a comment |
I tested, usingrequest.auth.token.firebase.sign_in_provider != 'anonymous'
, that works, thanks
– BlueEffect
Nov 22 '18 at 18:14
I tested, using
request.auth.token.firebase.sign_in_provider != 'anonymous'
, that works, thanks– BlueEffect
Nov 22 '18 at 18:14
I tested, using
request.auth.token.firebase.sign_in_provider != 'anonymous'
, that works, thanks– BlueEffect
Nov 22 '18 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.
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