登录后无法重定向

Posted

技术标签:

【中文标题】登录后无法重定向【英文标题】:Not able to redirect after logging in 【发布时间】:2021-12-23 01:20:01 【问题描述】:

我正在开发一个应用程序,登录后我们被重定向到受保护的路由,但我遇到了一个问题,当我输入用户名和密码并点击登录时,它成功调用 API 并在 @987654321 中设置令牌@ 但它没有重定向到受保护的路由,但是当我再次输入凭据时它工作正常。 这是我猜有问题的代码:

const submitAction = (data) => 
    dispatch(login(data));
    history.push(`$private_component`);
;

数据基本上是用户名和密码,我正在使用 Redux,这就是为什么在我调用 API 的地方分派登录操作并将令牌存储在 localstorage 中,并将用户相关数据存储在 redux 中。 我猜history.push 是在令牌存储在localstorage 之前被调用的。谁能给我建议解决方案?

【问题讨论】:

什么是private_component 【参考方案1】:

您可能希望login 操作返回一个 Promise,因此您可以等到 API 调用完成。可能发生的情况是您在上面的行完成之前推送到受保护的路线,因此用户实际上并没有登录。这也可以解释为什么它第二次起作用。另一种可能性是将重定向移动到登录操作本身,只要在收到响应并且用户登录后处理它。

export function login = (username, password) => (
  new Promise((resolve, reject) => 
    // your code
    fetch('wherever', whatever: 'config' ).then(r => r.json()).then(d => resolve(d)).catch(e => reject(e))
  
) 

类似的事情可能会让你这样做

const submitAction = (data) => 
  dispatch(login(data))
    .then(history.push(`$private_component`));

这实际上只是伪代码,因此请原谅可能无法完全正常工作的任何错误,但希望它能够传达这个想法。

【讨论】:

以上是关于登录后无法重定向的主要内容,如果未能解决你的问题,请参考以下文章

Spring登录后如何重定向到请求的页面?

登录后重定向到上一页? PHP

druid 监控页面 加上用户名密码后 重定向导致登录页面无法访问

通量通知后 ReactRouter 无法正确重定向

登录后重定向到推荐人不起作用

Django:登录后重定向到上一页