【发布时间】:2021-01-26 04:45:55
【问题描述】:
我是本地反应新手,我正在尝试使用 expo cli 为我的应用程序构建身份验证系统。我想我现在已经大致理解了,但是我读过的所有文章似乎都说您应该检查 AsyncStorage 中是否存在用户令牌,如果存在则将用户带到主页/帐户页面并跳过登录,但是令牌永远不会与特殊密钥或任何东西进行比较。这是它说要在文章中返回的代码示例...
return (
<AuthContext.Provider value={authContext}>
<Stack.Navigator>
{state.userToken == null ? (
<Stack.Screen name="SignIn" component={SignInScreen} />
) : (
<Stack.Screen name="Home" component={HomeScreen} />
)}
</Stack.Navigator>
</AuthContext.Provider>
)
我正在构建一个按月支付会员费的应用程序,因此我需要检查 userToken 是否存在以及它是否确实将其发送到后端进行验证,然后返回用户数据,如下面的代码所示,如这就是我为使用 react 的网站版本所做的,如果 userToken 不存在那么我只是将它们发送到登录页面?
const [isAuthenticated, setIsAuthenticated] = useState(false)
const [userData, setUserData] = useState(null)
const handleUserToken = () => {
// fetch call that sends userToken to be validated and returns {userData, isAuthenticated}
setSomeState(userData)
return isAuthenticated
}
state.userToken == setIsAuthenticated(false) ? setIsAuthenticated(handleUserToken())
return (
<AuthContext.Provider value={authContext}>
<Stack.Navigator>
{!state.isAuthenticated ? (
<Stack.Screen name="SignIn" component={SignInScreen} />
) : (
<Stack.Screen name="Home" component={HomeScreen} />
)}
</Stack.Navigator>
</AuthContext.Provider>
);
希望这个例子有意义,我也会使用 'useContext' 将 userData 传递给组件。
【问题讨论】:
标签: react-native expo asyncstorage