我正在尝试使用firebase身份验证在我的网站上实现一个重置密码页面。我让“发送电子邮件重置密码”页面正常工作。现在,据我所知,你会收到一封电子邮件,其中有一个链接,你需要点击,在这封电子邮件上,将有一个代码,需要重置密码。现在我不知道如何从url中抓取上述代码,并已经在现场为用户显示它。是否可以将代码放在电子邮件正文中,并让用户输入代码?如果没有,我如何从url中抓取代码并为用户输入它,以便用户只能输入密码?我的网站使用的是vue,这就是我目前所拥有的
<template>
<div class="container">
<h3>reset pw page</h3>
<div class="row">
<form @submit.prevent="ResetPw()" class="col s12">
<div class="row">
<div class="input-field col s12">
<input type="password" id="password" v-model="password" />
<label>Password</label>
</div>
</div>
<div class="row">
<div class="input-field col s12">
<input type="text" id="code" v-model="code" />
<label>Code</label>
</div>
</div>
<button type="submit" class="btn">Submit</button>
</form>
</div>
</div>
</template>
<script>
import firebase from "firebase/app";
export default {
data() {
return {
password: "",
code: ""
};
},
methods: {
ResetPw() {
firebase
.auth()
.confirmPasswordReset(this.code, this.password)
.then(() => {
console.log(`Password Changed!`);
})
.catch(err => console.log(err));
}
}
};
</script>我想我已经完成了所有的工作,我只需要了解如何从链接https://my-project.firebaseapp.com/__/auth/action?mode=&oobCode=中抓取oobcode
发布于 2020-08-24 12:08:41
如果您使用的是react-router,它将不再解析查询,但您可以通过location.search访问它
const params = new URLSearchParams(this.props.location.search);
const code = params.get('oobCode')
const email = await firebase.auth().verifyPasswordResetCode(code)或者,您可以执行新的URLSearchParams(window.location.pathname),而不是使用this.props.location.search
发布于 2020-02-29 03:41:15
不确定如何从电子邮件正文中获取oobCode,但是在页面加载后如何从URL中获取代码,您可以参考这个问题:how-can-i-get-query-string-values-in-javascript。在窗体中,为代码创建一个具有空字符串值的隐藏输入。一旦窗口加载,代码将从URL抓取,然后您可以将代码和密码传递到函数中
<body>
<form>
<input type="text" id='newPass' name='newPass' placeholder='New password'>
<input type="hidden" id='code' name='code' value="">
<button type='submit'>Submit</button>
</form>
</body>
<script>
$(window).load(function () {
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, '\\$&');
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
var code = getParameterByName('oobCode')
document.getElementById('code').value = code;
</script>希望这能有所帮助!
https://stackoverflow.com/questions/58822372
复制相似问题