你好,我已经创建了dotnet core web api用于登录和注册,但在应用程序中,刷新后它总是试图再次登录。由于我是新的反应原生的,我不能应用解决方案,我的项目。我使用redux,这是我的动作。
export const signin = (email, password) => {
return async dispatch => {
const response = await fetch(
'http://localhost:5000/api/user/login',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: email,
password: password,
}),
}
);
if (!response.ok) {
throw new Error('Something went wrong!');
}
const resData = await response.json();
console.log(resData);
dispatch({ type: SINGIN, token: resData.token, userId: resData.id });
saveDataToStorage(resData.token);
};
};
const saveDataToStorage = (token, userId) => {
AsyncStorage.setItem('userData', JSON.stringify({
token: token,
})
);
};
这里是我的导航器与react导航5 。
export const Navigator = () => {
const [userToken, setUserToken] = React.useState(null);
const userData = AsyncStorage.getItem('userData');
const authContext = React.useMemo(() => {
return {
signIn: () => {
setUserToken(userData);
},
singnUp: () => {
setUserToken(userData);
},
signOut: () => {
setUserToken(null);
},
};
}, [userData]);
return (
<AuthContext.Provider value={authContext}>
<NavigationContainer>
<RootStackScreen userToken={userToken} />
</NavigationContainer>
</AuthContext.Provider >
);
};
正如我所说,我无法找到一种方法来应用我找到的解决方案。谢谢你的帮助。
首先,确保你所有使用AsyncStorage的动作都应该是async(使用promise或asyncawait)。
然后按照这个来实现你的应用的认证流程。
https:/reactnavigation.orgdocsauth-flow
我的这个回答会对你有所帮助。