【发布时间】:2020-06-11 11:30:30
【问题描述】:
我正在尝试使用路由文件中的 React 在我的 SPA 中实现身份验证服务。当用户尝试访问某个私有路径时,该函数应验证机器内的令牌是否有效。但是我在这个逻辑中遇到了一个问题,该函数正在将错误值传递给私有路由。
我的路线文件:
const Routes = () => {
var [authedIn, setAuthedIn] = useState(false);
var authedNow = useRef(authedIn);
const verifyLog = async () => {
if (await AuthUser().then(res => res).catch(res => res) === true) {
setAuthedIn = true;
authedNow.current = true;
console.log('log in');
console.log(authedNow.current);
return true;
}
else {
setAuthedIn = false;
authedNow.current = false;
console.log('log of');
return false;
}
}
useEffect(() => {
verifyLog()
}, [authedNow.current]);
console.log(authedNow.current);
return (
<BrowserRouter>
<Switch>
<Route exact path="/" component={HomeScreen} />
<Route exact path="/register" component={RegisterScreen} />
<Route exact path="/login" component={LoginScreen}/>
<PrivateRouter exact path="/notes" component={NotesScreen} isAuth={authedNow.current}/>
<PrivateRouter exact path="/users/edit" component={UsersEditScreen} isAuth={authedNow.current}/>
</Switch>
</BrowserRouter>
)};
export default Routes;
AuthUser 文件:
const AuthUser = async () => {
const response = await AuthService.verifyToken();
if (response.status === 200) {
return true;
} else {
localStorage.clear();
return false;
}
}
有没有办法在async函数的结果之后渲染?
【问题讨论】:
标签: javascript reactjs react-router