我正在做一个项目,其前端为angular,后端为nodejs。
数据库和身份验证机制由Firebase云管理。
问题是我无法使用身份验证机制。 似乎有很多方法可以使用Firebase管理身份验证。
我希望后端处理身份验证部分,并且我正在使用电子邮件和密码生态系统进行身份验证。
但是似乎有2个npm软件包,一个用于角度firebase,另一个用于nodejs firebase-admin。
由于资源溢出,我一团糟地决定使用哪种方法以及如何有效地使用它来管理身份验证流程。
firebase中似乎有signInWithUserNameAndPassword
,firebase-admin中似乎有signInWithCustomToken
。
任何人都可以告诉我正确的道路吗?
我看着这个answer,但我不知道为什么我们需要将令牌传递回客户端,然后再次将其传递给管理员进行验证?
我的应用程序中的客户端是一个Web项目。 我的理解有什么错误吗?
提前谢谢
答案 0 :(得分:1)
您将使用worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
server_name localhost;
resolver 127.0.0.1;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
listen 443 ssl;
root /usr/share/nginx/html/login-ui;
index index.html index.htm;
include /etc/nginx/mime.types;
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
location / {
try_files $uri $uri/ /index.html;
}
location /test/api/ {
rewrite /test/api/login/ break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://authenticationservice.local:8443/api/login;
}
}
}
方法。令牌将返回给您,您可以将其存储在signInWithUserNameAndPassword
中,这在安全性上是个坏主意,但对于简单的项目练习来说是可以的。另外,您可以使用localStorage
或类似的库来保持状态。然后,您可以根据用户的令牌是否处于状态来对用户进行身份验证。
答案 1 :(得分:1)
firebase-admin
不支持任何用户身份验证API。因此,您必须使用firebase
程序包及其提供的signInWithEmailAndPassword()
API在客户端进行身份验证:https://firebase.google.com/docs/auth/web/password-auth