登录 NEXT-AUTH 后重定向到自定义 URL

Posted

技术标签:

【中文标题】登录 NEXT-AUTH 后重定向到自定义 URL【英文标题】:Redirect to a custom URL after login in NEXT-AUTH 【发布时间】:2021-05-20 17:54:53 【问题描述】:

使用 next-auth 登录后如何重定向到自定义 URL?

我有一个用于登录和内容的页面。逻辑是这样的:

如果用户登录 -> 显示页面内容 如果用户未登录 -> 在同一页面上显示登录表单。

登录后,用户应该被重定向到他登录的同一页面,而不是他之前来自的页面

【问题讨论】:

【参考方案1】:

您需要使用重定向路径作为参数调用SignInSignOut 函数,如下所示:

import  signIn, signOut  from "next-auth/react";

signIn( callbackUrl: "/app" )

signOut( callbackUrl: "/login" );

【讨论】:

【参考方案2】:

在您的页面中使用会话:

import  signIn, signOut, useSession  from 'next-auth/client'
    ...
const [session, loading] = useSession();
    
    ...
<>
    !session ? (
       <p> you are not logged in ! </p>
    ) : (
       <p> welcome to this page, you are logged in! </p>
    )
</>

【讨论】:

条件是解决方案的一部分。但可能有助于编辑条件以实际重定向到另一个页面(如问题作者所问)而不是简单地输出一些文本。 谢谢@Luke,每两种方式都是可能的。【参考方案3】:

您可能会发现有用的东西。我用它在页面之间自动重定向。

import  useHistory  from 'react-router-dom'

function foo() 
    const history = useHistory()
    
    // usage:
    history.push('url_to_redirect_to')
    // example: history.push('/') or history.push('/about')



【讨论】:

谢谢,但我认为这不适用于 next-auth。我们需要服务器端渲染 这里也使用react-router-dom,不推荐使用,因为Next.js提供了own router。

以上是关于登录 NEXT-AUTH 后重定向到自定义 URL的主要内容,如果未能解决你的问题,请参考以下文章

登录后重定向到自定义网址

php [Incsub支持] - 在新票提交后重定向到自定义感谢页面。

Spring SAML Okta - 如何在 IDP 启动的流程中重定向到自定义 URL

成功登录后重定向或在下一个身份验证中注册凭据类型

如果匿名用户无权访问 URL,如何将他们重定向到自定义页面而不是登录页面?

Laravel Ajax登录,成功后重定向到上一个url