JWT 注册问题
JWT signup issue
我有一个问题,在我的注册页面上,响应显示该用户已经存在,但是继续转到主页,就好像创建了一个新登录一样。如果用户存在,我希望它返回登录页面。我尝试添加一个 if else 块,但没有用。我不确定我做错了什么。
const onSubmitForm = async (e: any) => {
e.preventDefault();
try {
const body = { email, password, name };
const response = await fetch('http://localhost:5000/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
});
const parseRes = await response.json();
console.log(parseRes);
localStorage.setItem('token', parseRes);
// history.push('/home');
props.setAuth(true);
} catch (error) {
let errorMessage = 'Server error';
if (error instanceof Error) {
errorMessage = error.message;
}
console.error(errorMessage);
}
// eslint-disable-next-line no-lone-blocks
{
toggleSignup();
}
};
如果您想根据服务器的响应有条件地转到某个页面,您是正确的,一个简单的方法是使用 if/else
语句。
这是一个简单的例子:
const onSubmitForm = async (e: any) => {
e.preventDefault();
try {
const body = { email, password, name };
const response = await fetch('http://localhost:5000/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
});
const parseRes = await response.json();
// In YOUR code, you don't check the value of parseRes so your code goes straight to history.push('/home').
// You want to check the value of parseRes and conditionally go to a certain page based on the value
if (parseRes === 'User already registered') {
history.push('/login');
}
else {
localStorage.setItem('token', parseRes);
history.push('/home');
}
props.setAuth(true);
} catch (error) {
let errorMessage = 'Server error';
if (error instanceof Error) {
errorMessage = error.message;
}
console.error(errorMessage);
}
// eslint-disable-next-line no-lone-blocks
{
toggleSignup();
}
};
您当前的代码不检查 parseRes
的值,并且将始终执行 history.push('/home')
,因为它是下一行。
附带说明一下,不建议检查值 'User already registered',我只是用它来让您了解该怎么做。通常您想要检查 HTTP 响应代码(即 200、400、401 等)或检查一些返回的 JSON 值。
我有一个问题,在我的注册页面上,响应显示该用户已经存在,但是继续转到主页,就好像创建了一个新登录一样。如果用户存在,我希望它返回登录页面。我尝试添加一个 if else 块,但没有用。我不确定我做错了什么。
const onSubmitForm = async (e: any) => {
e.preventDefault();
try {
const body = { email, password, name };
const response = await fetch('http://localhost:5000/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
});
const parseRes = await response.json();
console.log(parseRes);
localStorage.setItem('token', parseRes);
// history.push('/home');
props.setAuth(true);
} catch (error) {
let errorMessage = 'Server error';
if (error instanceof Error) {
errorMessage = error.message;
}
console.error(errorMessage);
}
// eslint-disable-next-line no-lone-blocks
{
toggleSignup();
}
};
如果您想根据服务器的响应有条件地转到某个页面,您是正确的,一个简单的方法是使用 if/else
语句。
这是一个简单的例子:
const onSubmitForm = async (e: any) => {
e.preventDefault();
try {
const body = { email, password, name };
const response = await fetch('http://localhost:5000/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(body),
});
const parseRes = await response.json();
// In YOUR code, you don't check the value of parseRes so your code goes straight to history.push('/home').
// You want to check the value of parseRes and conditionally go to a certain page based on the value
if (parseRes === 'User already registered') {
history.push('/login');
}
else {
localStorage.setItem('token', parseRes);
history.push('/home');
}
props.setAuth(true);
} catch (error) {
let errorMessage = 'Server error';
if (error instanceof Error) {
errorMessage = error.message;
}
console.error(errorMessage);
}
// eslint-disable-next-line no-lone-blocks
{
toggleSignup();
}
};
您当前的代码不检查 parseRes
的值,并且将始终执行 history.push('/home')
,因为它是下一行。
附带说明一下,不建议检查值 'User already registered',我只是用它来让您了解该怎么做。通常您想要检查 HTTP 响应代码(即 200、400、401 等)或检查一些返回的 JSON 值。