【问题标题】:React-admin: don't show warning message on checkAuth failureReact-admin:在 checkAuth 失败时不显示警告消息
【发布时间】:2020-10-05 13:15:01
【问题描述】:

我从 React-Admin v2 升级到 v3 已经有一段时间了。我快完成了,但我需要微调一些内容。

使用 v2,当用户在没有令牌的情况下访问我们的 domain.tld 网站时,Promise 被拒绝,用户被重定向到 domain.tld/#/login。不显示错误/警告消息。

使用 v3,如果出现同样的情况,Promise 也会被拒绝,用户会被重定向到登录页面,但会出现 ra.auth.auth_check_error 警告消息 - 两次!

我理解逻辑,在大多数情况下显示警告消息可能很有用。例如,如果未登录的用户尝试访问 domain.tld/#/settings,则应将用户重定向到登录页面并通知“您必须先登录”。但是,如果用户第一次访问该网站,他会按预期被重定向到登录页面,但在这种情况下,不应显示警告消息。在这种情况下,用户很可能知道他/她必须先登录才能看到任何内容,因此没有必要警告用户,因为他/她没有做错任何事情。

我不知道解决这个问题有多容易。也许只是完全删除通知?怎么做?

也许一些例外是另一种解决方案,如果用户尝试访问根域 domain.tld/#/,则不会显示警告消息。并且会显示其他路线。如何做到这一点?

Promise.reject() 之后发生的功能能否以某种方式被覆盖?

我在 authProvider.js 中的 checkAuth:

checkAuth: () => localStorage.getItem("token")
    ? Promise.resolve()
    : Promise.reject(),

【问题讨论】:

    标签: authentication react-admin


    【解决方案1】:

    在您的 Promise.reject 中,您可以添加一个字符串,当用户授权失败时,该字符串将呈现给用户。

    checkAuth: () => localStorage.getItem("token") 
        ? Promise.resolve() 
        : Promise.reject("You are not authorized to view this")
    

    理论上,您可以根据您所在的页面返回不同的消息,但您在 checkAuth 中没有该信息。

    您还可以构建自己的登录页面并过滤消息,以便登录页面不会弹出祝酒词。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2017-01-07
      • 2019-12-22
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多