防止无效 email/password 提示
Prevent invalid email/password hinting
我正在使用 Angular 7 构建登录页面,我正在使用 angularfire2。一切正常,但有些东西让我很烦,我真的很不喜欢。这是我正在使用的表格:
但是,如果我输入错误的密码,开发者控制台的网络选项卡会注册以下内容:
如果我输入了错误的电子邮件地址,网络选项卡会显示:
{error: {code: 400, message: "EMAIL_NOT_FOUND",…}}
error: {code: 400, message: "EMAIL_NOT_FOUND",…}
code: 400
errors: [{message: "EMAIL_NOT_FOUND", domain: "global", reason: "invalid"}]
message: "EMAIL_NOT_FOUND"
我真的不喜欢这个的原因是当电子邮件或密码无效时,我会向用户显示消息:
You enter an invalid email or password
但这清楚地暗示了它的错误,因此如果有人试图破解,它会得到关于密码或电子邮件具体是否有效的提示。
这是我在用户单击“登录”按钮时使用的逻辑:
onSignIn(form: NgForm){
const email = form.value.email;
const password = form.value.password;
this.afAuth.auth.signInWithEmailAndPassword(email, password)
.then(firebaseUser=>{
console.log(firebaseUser);
}).catch(error=>{
if(error.code === "auth/user-not-found" || error.code === "auth/wrong-password"){
this.wrongAuthCreds = true;
setTimeout(()=>{
this.wrongAuthCreds = false;
}, 3000);
} else {
this.unknownErr = true;
setTimeout(()=>{
this.unknownErr = false;
}, 3000);
console.log(error);
}
});
}
有没有办法阻止发送该响应?有什么我应该配置或根本不能配置的东西。我查看了文档无济于事。提前致谢!
正如 David 在他的评论中所说,这些消息来自 Firebase 的后端本身,不幸的是,没有选项可以自定义该默认行为...但是...Firebase 确实 使您能够 customize the authentication process 使用自定义身份验证令牌。
工作量很大,但如果您真的想走这条路,那么您需要创建一个接受用户名和密码,验证它,生成一个自定义的 JWT,然后 returns 将它提供给最终用户...并让您的登录页面 POST 使用该云功能的凭据而不是 afAuth.auth.signInWithEmailAndPassword
。在您的新功能中,如果您无法验证用户名和密码,您可以发送回任何类型的通用错误消息。
我正在使用 Angular 7 构建登录页面,我正在使用 angularfire2。一切正常,但有些东西让我很烦,我真的很不喜欢。这是我正在使用的表格:
但是,如果我输入错误的密码,开发者控制台的网络选项卡会注册以下内容:
如果我输入了错误的电子邮件地址,网络选项卡会显示:
{error: {code: 400, message: "EMAIL_NOT_FOUND",…}}
error: {code: 400, message: "EMAIL_NOT_FOUND",…}
code: 400
errors: [{message: "EMAIL_NOT_FOUND", domain: "global", reason: "invalid"}]
message: "EMAIL_NOT_FOUND"
我真的不喜欢这个的原因是当电子邮件或密码无效时,我会向用户显示消息:
You enter an invalid email or password
但这清楚地暗示了它的错误,因此如果有人试图破解,它会得到关于密码或电子邮件具体是否有效的提示。
这是我在用户单击“登录”按钮时使用的逻辑:
onSignIn(form: NgForm){
const email = form.value.email;
const password = form.value.password;
this.afAuth.auth.signInWithEmailAndPassword(email, password)
.then(firebaseUser=>{
console.log(firebaseUser);
}).catch(error=>{
if(error.code === "auth/user-not-found" || error.code === "auth/wrong-password"){
this.wrongAuthCreds = true;
setTimeout(()=>{
this.wrongAuthCreds = false;
}, 3000);
} else {
this.unknownErr = true;
setTimeout(()=>{
this.unknownErr = false;
}, 3000);
console.log(error);
}
});
}
有没有办法阻止发送该响应?有什么我应该配置或根本不能配置的东西。我查看了文档无济于事。提前致谢!
正如 David 在他的评论中所说,这些消息来自 Firebase 的后端本身,不幸的是,没有选项可以自定义该默认行为...但是...Firebase 确实 使您能够 customize the authentication process 使用自定义身份验证令牌。
工作量很大,但如果您真的想走这条路,那么您需要创建一个接受用户名和密码,验证它,生成一个自定义的 JWT,然后 returns 将它提供给最终用户...并让您的登录页面 POST 使用该云功能的凭据而不是 afAuth.auth.signInWithEmailAndPassword
。在您的新功能中,如果您无法验证用户名和密码,您可以发送回任何类型的通用错误消息。