用户登录或注册后,我想重定向到仪表板页面 在这种情况下,我将获得用户已登录或已注册但页面不会进入仪表板的控制台
import { BrowserRouter as Router, Link, Redirect } from "react-router-dom";
//in signin.js
login = e => {
const { email, password } = this.state;
const { router } = this.props;
e.preventDefault();
auth()
.signInWithEmailAndPassword(email, password)
.then(user => {
if (user) {
console.log('user has signed in or up', user);
return <Redirect to='/profile' />;
} else {
console.log('user signed out or still need to sign in', user);
return <Redirect to='/signIn' />;
}
})
.catch(error => {
console.log(e);
});
};
//in App.js
render() {
return (
<Router>
<Route exact path="/" component={SignIn} />
<Route exact path="/signIn" component={SignIn} />
<Route exact path="/signUp" component={SignUp} />
<AuthorizedRoute exact path="/dashboard" component={Profile} />
</Router>
);
}
在注册时,我什至没有收到控制台消息,我认为没有必要签入注册(如果用户存在),那么我该如何进行注册
//in sign up.js
signUp = e => {
const { email, password } = this.state;
e.preventDefault();
auth()
.createUserWithEmailAndPassword(email, password)
.then(user => {
if (user) {
console.log('user has signed in or up', user);
return <Redirect to='/dashboard' />;
} else {
console.log('user signed out or still need to sign in', user);
return <Redirect to='/signIn' />;
}
})
.catch(error => {
console.log(error);
});
};
答案 0 :(得分:0)
您正在使用什么重定向?目前尚不清楚该代码是否可以回答问题。
res.redirect("/user/add");
您也可以根据响应使用此方法。
答案 1 :(得分:0)
根据提供的代码,成功登录后,您的重定向URL应该是“ /仪表板”,而不是“ / profile”。
您的signUp函数应该会产生一些控制台输出。如果确实不是,那意味着该函数没有被(成功)调用。
与其在登录In / Up Promise中使用重定向,不如使用一种使用onAuthStateChanged
的单个“身份验证状态观察器”来响应您的登录/ Up / Out事件并进行相应重定向的更好方法。 (有关此主题,请参见Firebase指南:Get Started with Firebase Authentication on Websites)有了该观察器之后,您的signInWithEmailAndPassword
和createUserWithEmailAndPassword
调用仅需要处理错误响应。