如何解决NextAuth Credentials 在成功获取数据后返回 null 这些是我目前面临的问题:-
目前,我在将 next-auth
凭据提供程序 实施到我的系统中时遇到问题。
我正在使用 axios
(到不同的本地主机)来验证凭据(电子邮件和密码)。
-
Nextjs 系统在
http://localhost:3000
中运行
-
节点服务器在
http://localhost:5400
中运行
这些是我目前面临的问题:-
-
成功登录后,我重定向到
http://localhost:5400
(空白屏幕)。即使我从系统中logout
也是如此。它仍然将我重定向到相同的网址。 - 即使在成功登录之后,
user
也会返回null
。我从session
获得的唯一数据是expires
我现在的代码:-
- 用于调用
signIn
和signOut
的演示按钮:-
// in homepage (pages/home.js)
import { signIn,signOut,useSession } from 'next-auth/client'
export default Homepage = () => {
const [ session ] = useSession()
console.log(session)
// returns 'null' (when not login yet)
// returns { expires: "2021-06-28T08:59:47.504Z",user: { name: null,email: null,image: null,_proto_: Object },_proto_: Object } after successful login
return (
<>
{!session ?
<>
Sign-in to continue
<button onClick={() => {
signIn('credentials',{
email: 'mohdfathi_mhdnoor@yahoo.com',password: 'qwer1234',callbackUrl: `${window.location.origin}/about`
})
}}>SignIn</button>
</>
:
<>
{session.user.email}
<button onClick={() => signOut()}>SignOut</button>
</>
}
</>
}
-
[...nextauth].js
:-
import axios from 'axios'
import NextAuth from 'next-auth'
import Providers from 'next-auth/providers'
import { config } from '../../../src/utils/Header'
export default NextAuth({
providers: [
Providers.Credentials({
name: 'Portfolio V4 Credentials',credentials: {
email: { label: "Email",type: "email",placeholder: "Please enter an email" },password: { label: "Password",type: "password",placeholder: "Please enter a password" }
},async authorize(credentials,req) {
try {
const res = await axios.post(
process.env.REACT_APP_SERVER_ENDPOINT_HOST + "/api/auth/callback/credentials",{ uid: '',email: credentials.email,password: credentials.password },config
)
const user = await res
if (user.data.success) {
console.log(user.data) // this logouts { success: true,data: { uid: '5f8fc26c6a103b243428bec1',sato: 1622295126589 } }
return user.data
}
} catch (e) {
console.log('Error: ')
console.log(e)
return null
}
}
})
]
})
我确实将 user
的内容更改为我从 server
获得的内容。但它根本没有反映上面的 session
I console.log
中的内容。它仍然 console.log
:-
{
expires: "2021-06-28T08:59:47.504Z",user: {
email: null,name: null,_proto_: Object
},_proto_: Object
}
解决方法
Next-Auth | When user object have too many items then session request is without data
查看该链接下的代码。你需要的是回调函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。