由于缺少会话而在 Next.js 中使用 Next-Auth 进行重定向时,如何显示 Toast 通知? [复制]

2024-05-21

例如,假设我有一个名为internal.tsx 的页面,其中包含:

export const getServerSideProps: GetServerSideProps = async (ctx) => {
  const session = await getSession(ctx);
  if (!session) {
    // TODO: Add a toast notification explaining the redirect. Ideally, the desired destination should be remembered and should be redirected to after login.
    return {
      redirect: {
        destination: '/',
        permanent: false,
      },
    };
  }

  const props = ...
  return { props };
};

如果访问者在 /internal 浏览此页面,他们将被弹回我的登录页面,而无需任何解释。

相反,我希望我的登录页面在屏幕顶部显示一条 toast 通知,解释他们尝试访问的页面需要登录,并且登录后将返回该页面。

我计划使用像这样的图书馆https://github.com/fkhadra/react-toastify https://github.com/fkhadra/react-toastify在登录页面上,但无法弄清楚如何/在哪里从会话中读取访问者刚刚被重定向的信息。

理想情况下每个页面(例如/internal)启动重定向可以指定其自己的自定义消息(例如保存到会话中的“flash 变量”),以便登录页面显示在 toast 中。


根据上面的评论尝试在这里回答。

与其使用重定向,不如使用context并设置一个新标题并执行context.res.redirect现在包含新的标头flashVariable(借用 Laravel)来自我之前的评论 - 内置redirect似乎没有能力设置这些值。

i.e

export const getServerSideProps: GetServerSideProps = async (ctx) => {
  const session = await getSession(ctx);
  if (!session) {
   ctx.res.setHeader("yourFlashVariable", "yourFlashValue");
   ctx.res.redirect('/')
  }

  const props = ...
  return { props };
};

在你的/路线,您可以查找 FlashVariable 并调用 toast 库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

由于缺少会话而在 Next.js 中使用 Next-Auth 进行重定向时,如何显示 Toast 通知? [复制] 的相关文章

  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • "message": "ENOENT: 没有这样的文件或目录,打开 'E:\\astrology\\utils\\uploads\\1600798534862qf.png'"

    正如标题所示 我得到error message ENOENT no such file or directory open E astrology utils uploads 1600798534862qf png 在我的项目中 即使在通过
  • 将混合内容重定向到 HTTPS 的正确 htaccess 规则是什么

    当通过 HTTPS 访问网站时 是否有一种方法可以使用 htaccess 重定向条件和重定向来捕获通过 HTTP 调用的内容 如果通过 HTTPS 访问网站 http 内容将被重定向到 https 等效 url 本质上 当我的网站通过 HT
  • 用户可以更改 PHP 中 $_SESSION 的值吗?

    这是我的想法 我想知道是否可能 将信息存储在 PHP 的 SESSION 变量中有多安全 在 SESSION 变量中存储变量有两个潜在的 不安全 风险 另一个答案所描述的第一个称为 会话固定 这里的想法是 由于会话 ID 存储在 cooki
  • 为什么此 HTTP 请求在 AWS Lambda 上不起作用?

    我正在开始使用 AWS Lambda 并尝试从我的处理程序函数请求外部服务 根据这个答案 https stackoverflow com a 27932216 473467 HTTP 请求应该可以正常工作 而且我还没有找到任何其他说明的文档
  • 找到对应的未经V8优化的JS代码源

    我尝试优化 node js 应用程序的性能 因此我正在分析 V8 的 JIT 编译器的行为 当通过运行应用程序时node trace deopt trace opt code comments print optcode 输出包含许多重复出
  • 在 python 中将变量传递给重定向上的模板

    我对 Python 比较陌生 所以请原谅任何幼稚的问题 我的主页有 2 个输入 一个用于 产品 一个用于 电子邮件 当用户单击 提交 时 他们应该被发送到 success 其中会显示 您已请求 产品 您将通过 电子邮件 收到通知 我试图找出
  • 将大写 URL 重定向为小写(*** 除外) - htaccess

    我正在尝试将大写 URL 重定向为小写 但有点噩梦 主要是我的 htaccess知识缺乏 目前我有
  • Node Sass 没有绑定您当前的环境

    我在 SO 上看到过很多这样的问题 但似乎没有一个能解决或匹配问题 Node Sass 找不到适合您当前环境的绑定 带有 Node js 6 x 的 Windows 64 位 奇怪的是 我没有安装 Node js 6 x 从命令行 node
  • React Native - 无法从“index.js”解析模块“@babel/runtime/helpers/interopRequireDefault”

    正如中提到的无法解析模块 babel runtime helpers interopRequireDefault https stackoverflow com questions 52486219 unable to resolve mo
  • 重定向并保留我的图标

    我想知道当您单击 facebook 上的链接时 facebook 重定向如何保留其 favicon 并使用 FB favicon 打开新选项卡 我想知道如何实现这一点 它不是 iframe 所以我怎么能做这样的事情 我应该从哪里开始 当重定
  • PHP session_regenerate_id 和黑莓浏览器

    问候 我正在开发一个登录系统 并陷入了黑莓浏览器身份验证的困境 他们似乎对 PHP 的 session regenerate id 有问题 有人可以建议替代方案吗 以下是身份验证和登录脚本 UPDATE看来会话一般都不起作用 拿出 sess
  • findAndModify - MongoError:异常:必须指定删除或更新

    我想更新一个数组并返回文档 我的 findAndModify 语法正确吗 this becomeFollower function title username callback use strict posts findAndModify
  • AWS beanstalk Nodejs 多核

    我有一个问题 在文档中找不到 如果我使用 beanstalk 创建一个 Nodejs 应用程序并使用多核机器 beanstalk 会利用所有这些核心吗 由于nodejs是单线程应用程序 beanstalk会为每个cpu创建一个新的nodej
  • 如何在node.js中同步读取文件或Stream?

    请不要讲授关于我应该如何异步完成所有事情的讲座 有时我想以简单明显的方式做事 这样我就可以继续其他工作 由于某种原因 以下代码不起作用 它与我在 a 上找到的代码匹配最近的问题 https stackoverflow com questio
  • nodeJS + Swig 模板将变量传递给 javascript

    有没有办法使用nodeJS的express swig模板将变量从服务器端传递到客户端javascript 我知道这可以在 Jade 中完成 但我宁愿坚持使用更类似于 HTML 的模板引擎 感谢各位的帮助 好的 我假设您可以使用 consol
  • IE 中未定义“代理”

    我通过 React Node 构建了一个 Excel 插件Umi https umijs org 我们已经实施了我们的身份验证系统 身份验证在 Chrome 和 Safari 中有效 我刚刚意识到它在 IE11 中不能很好地工作 F12表明
  • 动态数据 Express.JS 的缓存控制

    如何建立一个缓存控制政策在快递 js关于 JSON 响应 我的 JSON 响应根本没有改变 所以我想积极缓存它 我找到了如何对静态文件进行缓存 但找不到如何对动态数据进行缓存 不优雅的方法是简单地添加一个调用res set 在任何 JSON
  • Next.js - 如何使用 Provider 来包装路由并使用 Context 和 Hooks

    我在 create react app 中编写了类似于以下的代码 我想知道 next js 的等效代码 下面的代码是我尝试拥有一个可用于所有页面的全局上下文 提供者包装链接 我没有收到任何错误 问题出在里面about当我期望上下文状态时 页
  • 如何在pm2下运行nuxt?

    我有 2 个 nuxt 项目需要在服务器上运行 每当我在本地运行该应用程序时 它似乎都在使用 npm run dev 但在服务器上 这需要在子进程下运行 所以我使用 pm2 来实现 但是每当我开始使用 pm2 运行相同的 npm 脚本时 该

随机推荐

  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 查询嵌套查询结果中两列的位置

    我正在编写这样的查询 select from myTable where X in select X from Y and XX in select X from Y X 列和 XX 列的值必须位于同一查询的结果中 select X fro
  • 在 Java 中的 JFrame/JPanel/JComponent 中添加 Web 浏览器

    我正在开发一个 Java 应用程序 需要在应用程序中使用 Web 浏览器 我见过一些应用程序这样做 例如在同一应用程序中单击左侧面板中的提要并打开右侧面板中的链接时的 RSS 阅读器 我想实现类似的功能 在java中可以做到这一点吗 Jav
  • SQL Server:当列为 NTEXT 时 IN('asd') 不起作用

    我该如何解决这个问题 where someNtext IN asd asd1 给出错误 消息 402 第 16 层 状态 1 第 XXXXX 行数据类型 ntext 和 varchar 在等于运算符中不兼容 An INlist 只是 OR
  • 为什么这段代码会死锁?

    我在可加载模块中创建了 2 个 Linux 内核线程 并将它们绑定到在双核 Android 设备上运行的单独 CPU 内核 运行几次后 我注意到设备重新启动并重置了硬件看门狗定时器 我一直在解决这个问题 什么可能导致僵局 基本上 我需要做的
  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • 进度状态报告模式

    我正在实现需要显示进程栏 或进度百分比 的长时间运行的进程 长时间运行的过程的整体逻辑很复杂 各种分页数据检索 因此 我最终在代码中的不同位置硬编码了大量百分比 在更新完成百分比时 什么被认为是最佳设计模式 我发现 JFace 周围使用的模
  • 我在 NSDateComponentsFormatter 上的 allowedFractionalUnits 上做错了什么?

    基本上我想要的是获取仅以小时表示的时间间隔的值 而不将其四舍五入为完整小时 使用NSDateComponentFormatter https developer apple com library ios documentation Fou
  • Emacs 24.x 上的 IPython 支持

    我对 IPython 与 Emacs 的集成感到困惑 从 Emacs 24 开始 Emacs 附带了自己的python el 该文件是否支持 IPython 还是仅支持 Python 另外 维基百科 http emacswiki org e
  • 收到“无法解析上传的APK的AndroidManifest.xml。它是否正确编译?”启用 Google 应用签名后出现错误

    启用后谷歌应用程序签名 https support google com googleplay android developer answer 7384423 hl en 每次我尝试将签名版本 APK 上传到 Play 商店时 都会收到一
  • 使用java在网页中进行字符编码

    如何使用java找出网页中的字符编码类型 打开与 URL 的连接 使用URL openConnection http download oracle com javase 6 docs api java net URL html openC
  • Jenkins:如何使由于工作区问题而导致的失败构建的颜色从红色变为灰色?

    我们的詹金斯构建应该只是red当有一个构建代码时出现问题比如编译问题 如果存在管理员问题 例如工作空间已满 某些从属设备已关闭 我们需要将这份工作变成gray 表明有一个詹金斯本身的问题 但开发商应该not保持高度戒备 这是一个需要将作业变
  • Crashlytics Android Studio 插件无法初始化

    我正在运行 Android Studio 0 5 1 我已经下载了 Crashlytics Android Studio 插件并从光盘安装了它 当我重新启动 Android Studio 时 出现以下异常 Plugin com crashl
  • 将设置函数(setter)标记为 constexpr 的目的是什么? [复制]

    这个问题在这里已经有答案了 我无法理解将 setter 函数标记为的目的constexpr 自 C 14 起这是允许的 我的误解来自以下情况 我使用 constexpr c tor 声明一个类 并且我将通过创建该类的 constexpr 实
  • Perl regex:如何知道匹配数

    我循环遍历一系列正则表达式并将其与文件中的行进行匹配 如下所示 for my regex regexs ref LINE for rawfile regex do do something here next LINE 有没有办法让我知道我
  • 使用 equals 方法比较两个对象,Java

    我有一个对象数组 我想将它们与目标对象进行比较 我想返回与目标对象完全匹配的对象的数量 这是我的计数方法 public int countMatchingGhosts Ghost target int count 0 for int i 0
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

    我正在 ASP NET MVC 中开发我的第一个应用程序 但遇到了一个我无法解决的问题 即使在阅读了整个互联网之后也是如此 因此 我有几个使用视图模型创建的视图 它们是报告 这些视图模型是根据用户选择标准填充的 我正在尝试构建一种接受模型并
  • 一段时间后终止线程的最 Pythonic 方法

    我想在线程中运行一个进程 它正在迭代一个大型数据库表 当线程运行时 我只想让程序等待 如果该线程花费的时间超过 30 秒 我想终止该线程并执行其他操作 通过终止线程 我的意思是我希望它停止活动并优雅地释放资源 我认为最好的方法是通过Thre
  • C# 处理标准输入

    我目前正在尝试通过命令行断开与网络文件夹的连接 并使用以下代码 System Diagnostics Process process2 new System Diagnostics Process System Diagnostics Pr
  • 由于缺少会话而在 Next.js 中使用 Next-Auth 进行重定向时,如何显示 Toast 通知? [复制]

    这个问题在这里已经有答案了 例如 假设我有一个名为internal tsx 的页面 其中包含 export const getServerSideProps GetServerSideProps async ctx gt const ses